"iOS threading programming guide"中的条件样本



在阅读"iOS线程编程指南"时,我对"使用条件"部分中的示例代码感到困惑。

查看示例 4-3 和示例 4-4,它们用于演示 NSCondition 类的使用。如果线程开始使用 4-3 等待条件,然后第二个线程尝试使用 4-4 发出条件信号。由于条件被第一个线程锁定,第二个线程是否有机会发出条件信号?如果没有,那不是像是僵局吗?

如果这是一个愚蠢的问题,请原谅我:-)

以下是Apple提供的有关如何使用可可条件的示例:

示例 4-3 使用可可条件

[cocoaCondition lock];
while (timeToDoWork <= 0)
    [cocoaCondition wait];
timeToDoWork--;
// Do real work here.
[cocoaCondition unlock];

示例 4-4 发出可可条件的信号

[cocoaCondition lock];
timeToDoWork++;
[cocoaCondition signal];
[cocoaCondition unlock];

当第一个线程调用等待时,它会放弃锁的同步。当第二个线程调用发出信号时,第一个线程可以唤醒,并在第二个线程解锁其锁时恢复。此时,第一个线程将重新获得锁的同步,并且可以安全地进行。

最新更新