我知道以下是您应该如何使用NSCondition的方法:
方法1:
[cocoaCondition lock];
while (someConditionIsTrue)
[cocoaCondition wait];
// Do real work here.
[cocoaCondition unlock];
方法2:
[cocoaCondition lock];
timeToDoWork++;
someConditionIsTrue = NO;
[cocoaCondition signal];
[cocoaCondition unlock];
我只想使用一个可以从不同线程进行锁定和解锁的简单锁,所以我知道我需要为此使用NSCondition,而且苹果医生说,即使没有这样做,检查条件也要格外谨慎(从Apple doc:“为了避免由这些虚假信号引起的问题,您应该始终将谓词与条件锁一起使用”)。
方法之间存在依赖关系,但是这是双向的,这意味着在另一个方法释放该锁之前,任何人都无法完成自己的工作(该锁可能会在从该工作体分派的第三个线程上释放)。锁定它的方法)。
最佳答案
首先,您的代码在How does the NSCondition work?上的另一篇文章之后工作良好。
二,不要打电话
//[cocoaCondition wait];
可能是您想要的,或者仅使用NSXXLock。