如何確定dispatch_semaphore_t
是否在等待時等待?我最初想:如何確定是否正在等待調度信號量?
if (dispatch_semaphore_wait(mySemaphore, DISPATCH_TIME_NOW)) {
NSLog(@"No more resources, wait");
} else {
NSLog(@"Resources available, shouldn't wait");
}
但是這樣做dispatch_semaphore_wait()
信號燈的行爲是遞減所以後來我就在想:
if (dispatch_semaphore_wait(mySemaphore, DISPATCH_TIME_NOW)) {
NSLog(@"No more resources, wait");
} else {
dispatch_semaphore_signal(mySemaphore);
NSLog(@"Resources available, shouldn't wait");
}
尚未遞減信號量的最終結果,但是看起來像一個黑客,建議?
編輯
由於我打字了我在做什麼,我是如何來到這個結論,我意識到,我確實想解決的方法不對,我只是想知道,如果我是等待資源並能夠向用戶顯示「等待」對話框。我覺得這是做了正確方式:
這是無法完成的(至少不可靠),並且您想要這樣做的事實表明設計錯誤。我加入@das問道:你在高度抽象層面上想做什麼?什麼情況會讓你覺得你想知道信號量是否在等待? – 2013-04-03 23:24:35
@KenThomases你說得對,我以錯誤的方式來到這裏,我編輯了更好的解決方案。 – Shizam 2013-04-03 23:38:44