GCD-головоломка: порядок вывода и где дедлок?
Задача
Код выполняется на главном потоке (например, в main.swift). Что напечатается?
let main = DispatchQueue.main
let serial = DispatchQueue(label: "serial")
let concurrent = DispatchQueue(label: "concurrent", attributes: .concurrent)
main.async {
print(1)
}
main.async {
print(2)
serial.async { print(3) }
serial.sync {
print(4)
concurrent.sync {
print(5)
concurrent.sync { print(6) }
serial.sync { print(7) }
}
}
}
serial.sync { print(8) }
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep