Swift Queue Leadlock при вызове синхронизации внутри асинхроIOS

Программируем под IOS
Anonymous
Swift Queue Leadlock при вызове синхронизации внутри асинхро

Сообщение Anonymous »

Мой код замерзает, когда я вызываю 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

Вернуться в «IOS»