Примечание. Это не повторяющийся вопрос, который я уже видел. тема
Нет ответа о DispatchWorkItem
У меня есть код, как показано ниже
let dwi3 = DispatchWorkItem {
print("start DispatchWorkItem \(Thread.isMainThread)")
sleep(2)
print("end DispatchWorkItem")
}
let myDq = DispatchQueue(label: "A custom dispatch queue")
dwi3.notify(queue: myDq) {
print("notify")
}
DispatchQueue.global().async(execute: dwi3)
Который работает правильно (я вижу уведомление на консоли), а не в основном потоке start DispatchWorkItem false
запустить DispatchWorkItem false
конец DispatchWorkItem
уведомлять
Теперь я пытаюсь уведомить основной поток, используя
dwi3.notify(queue: DispatchQueue.main) {
print("notify")
}
Но он никогда не вызывает, я прочитал и обнаружил, что если Thread заблокирован, возникает ситуация. но я уже выполняю DisptachWorkItem
в DispatchQueue.global()
Пожалуйста, кто-нибудь может помочь мне в этом, что на самом деле происходит?
dwi3.notify(queue: DispatchQueue.main)
как на игровой площадке, так и в приложении. Как вы запускаете код - person Paulw11   schedule 29.09.2017import PlaygroundSupport
иPlaygroundPage.current.needsIndefiniteExecution = true
- person Paulw11   schedule 29.09.2017sleep(80)
заблокирует основную очередь. Избавьтесь от него и добавьте две строчки из моего предыдущего комментария. - person Paulw11   schedule 29.09.2017import PlaygroundSupport and PlaygroundPage.current.needsIndefiniteExecution = true
теперь я вижуnotify
- person Prashant Tukadiya   schedule 29.09.2017