我知道您应该如何使用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:“为了避免这些虚假信号造成的问题,您应该始终在条件锁的同时使用谓词”)。
方法之间存在依赖关系,但在这两种情况下都是如此,这意味着在另一个方法释放锁之前,没有人能够完成他们的工作(这可能在锁定锁的方法的主体上被分派到第三个线程上释放)。
发布于 2017-02-13 04:52:09
首先,您的代码在这里的另一篇文章中很好地工作,How does the NSCondition work?。
第二,不要打电话
//[cocoaCondition wait];这可能是您想要的,或者只使用NSXXLock。
https://stackoverflow.com/questions/11504591
复制相似问题