在阅读"iOS线程编程指南“时,我对”使用条件“一节中的示例代码感到困惑。
查看清单4-3和清单4-4,它们用于演示NSCondition类的使用。如果线程开始使用4-3等待条件,然后第二个线程尝试使用4-4向条件发出信号。由于条件正被第一个线程锁定,那么第二个线程是否有可能发出该条件的信号?如果不是的话,难道不是一个僵局吗?
如果这是个愚蠢的问题,请原谅-)
以下是Apple提供的关于如何使用Cocoa条件的示例:
使用Cocoa条件的清单4-3
[cocoaCondition lock];
while (timeToDoWork <= 0)
[cocoaCondition wait];
timeToDoWork--;
// Do real work here.
[cocoaCondition unlock];
清单4-4发出Cocoa条件信号
[cocoaCondition lock];
timeToDoWork++;
[cocoaCondition signal];
[cocoaCondition unlock];
发布于 2012-06-19 20:41:08
当第一个线程调用等待时,它将放弃锁的同步。当第二个线程调用信号时,第一个线程可以唤醒,并在第二个线程解锁时恢复。此时,第一个线程恢复了锁的同步,并且可以安全地进行。
https://stackoverflow.com/questions/11107096
复制相似问题