我知道以下是您应该如何使用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:“为了避免由这些虚假信号引起的问题,您应该始终将谓词与条件锁一起使用”)。

方法之间存在依赖关系,但是这是双向的,这意味着在另一个方法释放该锁之前,任何人都无法完成自己的工作(该锁可能会在从该工作体分派的第三个线程上释放)。锁定它的方法)。
  • 是否可以等待两种方法的条件并在两种方法的结尾发出信号?
  • 如果我有3个method1线程同时等待,它们将以什么顺序进入工作主体?我想这是按照他们进入等待的顺序,对吗?
  • 最佳答案

    首先,您的代码在How does the NSCondition work?上的另一篇文章之后工作良好。

    二,不要打电话

     //[cocoaCondition wait];
    

    可能是您想要的,或者仅使用NSXXLock。

    08-18 06:26