let q = DispatchQueue.init(label:"test",qos:.background)
q.sync{
NSLog("q")
q.sync {
NSLog("\(Thread.current.isMainThread) \(Thread.current.name) \(Thread.current.qualityOfService)")
}
}
為什么 q.sync 里面的 q.sync 沒有列印出來?
uj5u.com熱心網友回復:
這稱為死鎖。內部呼叫q.sync等待第一個q.sync任務完成。第一個q.sync任務無法完成,因為它有一個內部q.sync等待調度。
這就是你不打電話的原因 DispatchQueue.main.sync {...}
所以內部佇列呼叫必須是async為了不導致串行佇列死鎖。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/411912.html
標籤:
下一篇:swift的擴展范圍是什么?
