Структурированная конкурентность в Swift связывает время жизни асинхронных задач напрямую с лексической областью видимости. Это означает, что любая задача, созданная внутри области видимости, не может пережить эту область.
Задачи создаются двумя основными способами:
async let — запускает дочернюю задачу встроенно и автоматически ждёт её результата перед выходом из охватывающей области видимостиВ обоих случаях Swift гарантирует, что ни одна дочерняя задача не выходит за границы своей родительской области видимости.
async let result = fetchData()
// result автоматически ожидается перед выходом из этой области видимости
Благодаря принудительному соблюдению иерархии родитель-потомок, структурированная конкурентность Swift обеспечивает:
Неструктурированные задачи (Task { }) намеренно отказываются от этой модели и требуют ручного управления жизненным циклом.
В структурированной конкурентности Swift дочерние задачи, созданные с помощью async let, автоматически ожидаются перед выходом из их охватывающей области, что предотвращает их выживание за пределами контекста родительской задачи.
Новый — ещё не проверен сообществом
Вы