如何确定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