Выбор ответа Junior Корутины и structured concurrency спрашивают часто обновлено

Что делает withContext

Вопрос

Что делает withContext(Dispatchers.IO) { readFile() }?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Выполняет блок на IO, ждёт и возвращает результат. withContext это suspend-функция: она выполняет блок в указанном контексте, ждёт завершения и возвращает результат, после чего корутина продолжает в исходном диспетчере.

Варианты ответа

  1. Выполняет блок на IO, ждёт и возвращает результатправильный ответ
  2. Запускает новую независимую корутину и сразу возвращает Job
  3. Блокирует главный поток, пока файл читается
  4. Меняет диспетчер всего scope до его отмены

Разбор

withContext это suspend-функция: она выполняет блок в указанном контексте, ждёт завершения и возвращает результат, после чего корутина продолжает в исходном диспетчере. Новой независимой корутины, как у launch, нет. Главный поток не блокируется, корутина просто приостановлена. Контекст меняется только на время блока.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.