Structured concurrency связывает дочерние задачи со временем жизни области родителя. Task.detached не относится к ней; обычный Task {} тоже создаёт unstructured task.
Как ты понимаешь термин structured concurrency в Swift? Task.detached подходит под это понятие?
Structured concurrency связывает дочерние задачи со временем жизни области родителя. Task.detached не относится к ней; обычный Task {} тоже создаёт unstructured task.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Structured concurrency связывает дочерние задачи со временем жизни области родителя. Task.detached не относится к ней; обычный Task {} тоже создаёт unstructured task.
Структурированные варианты — async let и task group: область не завершается, пока её дочерние задачи не завершены. Отмена распространяется по правилам этой структуры, но остаётся кооперативной.
Task.detached имеет независимый жизненный цикл и не наследует автоматически actor isolation, task-local значения и приоритет окружающей задачи. Сохранить handle, дождаться результата и отменить её должен вызывающий код. Task {} может наследовать контекст исполнения, но это не превращает его в структурированную дочернюю задачу. Detached не нужен просто ради любого фонового сетевого вызова.
Источник: raw.githubusercontent.com.