Какой вывод получит программа?

При выполнении на главном потоке порядок — 1, 3, 2. Без указания вызывающего потока между 2 и 3 строгого порядка нет.

Короткий ответ

Что ответить на собеседовании

При выполнении на главном потоке порядок — 1, 3, 2. Без указания вызывающего потока между 2 и 3 строгого порядка нет.

Подробный разбор

Ответ с пояснениями

Условие

Определите порядок печати строк при выполнении следующего Swift‑кода:

print("1")
DispatchQueue.main.async {
         print("2")
}
print("3")

Какие числа появятся в консоли и в каком порядке?

Ответ

При выполнении на главном потоке порядок — 1, 3, 2. Без указания вызывающего потока между 2 и 3 строгого порядка нет.

1 печатается до постановки async-блока. Если этот код находится в текущем main-блоке, очередь не выполнит 2, пока он не завершится после 3. Если код идёт на фоновом потоке, main queue может успеть напечатать 2 раньше 3. В короткой консольной программе дополнительно требуется работа главной очереди до завершения процесса; иначе отложенная печать может не произойти. async означает неблокирующую постановку, а не обещание запуска после всех следующих строк другого потока.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее