Мой код замерзает, когда я вызываю queue.sync в queue.async. Выполнение полностью останавливается на вызове синхронизации. < /P>
Код: Выделить всё
import Foundation
let queue = DispatchQueue(label: "com.example.serialQueue")
func updateUI() {
let th = Thread.current
print("UI updated on \(th)")
queue.async {
let th = Thread.current
print("UI updated on \(th)")
queue.sync { // Code freezes here
let th = Thread.current
print("UI updated on \(th)")
}
}
}
updateUI()
Когда я запускаю это на игровой площадке, выполнение, кажется, висит: третий оператор печати не работает, если я отправляю в свою пользовательскую серийную очередь. Что вызывает тупик с пользовательской очередью, и почему это не происходит с глобальной одновременной очередью? Пожалуйста, объясните, что происходит внутри.
Подробнее здесь:
https://stackoverflow.com/questions/797 ... side-async