Какую гарантию безопасности данных теряет свойство actor после объявления nonisolated(unsafe)?
База Hintsage
Конкурентность
async/await, actors, tasks и безопасность данных.
Практика
Вопросы: Конкурентность
Как async-обёртка над callback API должна передать отмену родительской задачи в незавершённую операцию?
Объясните, почему вызов async-функции сам по себе не запускает новую задачу.
При выходе из области withTaskGroup все дочерние задачи уже завершены?
В синхронном не изолированном коде вызывается синхронный метод, помеченный @MainActor. Перейдёт ли Swift автоматически на главный актор?
В цикле async-задачи регулярно вызывают Task.yield(): какой гарантии это не даёт?
При объявлении ссылочного типа как @unchecked Sendable какую гарантию безопасности разработчик берёт на себя?
Разберите ограничение: почему actor не может реализовать синхронное требование протокола методом, читающим его изолированное состояние?
За счёт чего actor предотвращает одновременное выполнение изолированных участков на разных задачах?
Практическая ситуация: родительская задача Swift отменена во время выполнения дочерней — какое изменение состояния дочерней задачи происходит автоматически?
В чём практическое отличие withCheckedContinuation от withUnsafeContinuation при адаптации callback API?
В каком порядке for await выдаёт результаты дочерних задач TaskGroup?
Всегда ли await означает фактическую приостановку задачи?
Почему чтение неизменяемого let-свойства actor может не требовать await?
Почему захват несамопередаваемого значения обычно допустим в Task, но запрещается в Task.detached?
Разберите последствия: что гарантирует withTaskCancellationHandler, если задача уже отменена до регистрации обработчика?
Разберите порядок запуска: что гарантирует async let до первого await и какой порядок вывода допустим?
func work(_ name: String) async -> String {
print("start \(name)")
await Task.yield()
print("finish \(name)")
return name
}
func demo() async {
async let first = work("A")
print("between")
async let second = work("B")
print("before await")
_ = await (first, second)
}
Можно ли безопасно передать ссылку на actor между задачами Swift, несмотря на его ссылочную семантику?
Когда объект Swift, запустивший долгоживущую обычную Task с сильным захватом self, сможет деинициализироваться?
В чём принципиальное преимущество TaskGroup перед async let при динамическом числе дочерних операций?
Показано 21–40 из 100