Выбор ответа Middle Swift Concurrency спрашивают часто обновлено
Как работает отмена Task
Вопрос
Что происходит при вызове task.cancel()?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Задача помечается отменённой; код сам проверяет отмену. Отмена кооперативная: ставится флаг, который видят Task.isCancelled и Task.checkCancellation().
Варианты ответа
- Поток задачи принудительно останавливается, как
pthread_cancel - Задача помечается отменённой; код сам проверяет отменуправильный ответ
- Задача немедленно бросает
CancellationErrorв любой точке - Отменяются все задачи приложения, включая независимые
Разбор
Отмена кооперативная: ставится флаг, который видят Task.isCancelled и Task.checkCancellation(). Многие async API (Task.sleep, URLSession) на отмену реагируют сами, бросая ошибку. Принудительной остановки потока нет, иначе бы ломались инварианты и ресурсы. В структурированной конкурентности флаг распространяется на дочерние задачи, но не на всё приложение.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.