Что выведет код Middle GCD и OperationQueue обновлено

Что выведет Swift: async и sync на последовательной очереди

Вопрос

Что выведет код? Очередь q последовательная.

import Dispatch

let q = DispatchQueue(label: "serial")
print("1")
q.async { print("2") }
q.sync { print("3") }
print("4")

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

Напишите, что выведет код: каждый вывод с новой строки.

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

Коротко

Код выведет: 1, 2, 3, 4. async ставит блок «2» в очередь и сразу возвращается. sync ставит блок «3» за ним и ждёт: последовательная очередь сначала выполнит «2», потом «3».

Что выведет

1
2
3
4

Разбор

async ставит блок «2» в очередь и сразу возвращается. sync ставит блок «3» за ним и ждёт: последовательная очередь сначала выполнит «2», потом «3». Только после этого текущий поток печатает «4».

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

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

Термины по теме