Выбор ответа Junior Swift Concurrency спрашивают часто обновлено
Что происходит на await в Swift
Вопрос
Что происходит, когда выполнение доходит до let user = await api.loadUser()?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Функция может приостановиться и освободить поток. await отмечает точку возможной приостановки.
Варианты ответа
- Текущий поток блокируется до получения результата
loadUser - Для ожидания результата создаётся отдельный новый поток
- Функция может приостановиться и освободить потокправильный ответ
- Код после
awaitвыполняется параллельно сloadUser
Разбор
await отмечает точку возможной приостановки. Пока результата нет, поток не блокируется и выполняет другую работу, а функция продолжится, когда результат будет готов, возможно на другом потоке из кооперативного пула (если функция не изолирована на актор, например MainActor). Отдельный поток на каждое ожидание не создаётся. Код после await выполняется строго после получения результата.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.