我是 Xcode 和 ObjectiveC 的新手,我正在構建一個非 UI 工具。我發現當我在主執行緒中使用信號量時,我的主執行緒將永遠掛起并且永遠不會喚醒
dispatch_semaphore_t waitSem = dispatch_semaphore_create(0);
dispatch_async(dispatch_get_main_queue(), ^{
// do something else
dispatch_semaphore_signal(waitSem);
});
dispatch_wait(waitSem, DISPATCH_TIME_FOREVER);
uj5u.com熱心網友回復:
當主佇列在內部阻塞時,不會在主佇列上處理異步任務dispatch_wait()。這包括您排隊的任務。
dispatch_wait() 只有在主佇列不運行任何代碼的情況下滿足信號量條件時,來自主佇列的命令才有意義。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/372462.html
