gpt4 book ai didi

ios - NSCondition - 多线程

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:44:56 26 4
gpt4 key购买 nike

我知道以下是您应该如何使用 NSCondition:

方法一:

[cocoaCondition lock];
while (someConditionIsTrue)
[cocoaCondition wait];

// Do real work here.

[cocoaCondition unlock];

方法二:

[cocoaCondition lock];
timeToDoWork++;
someConditionIsTrue = NO;
[cocoaCondition signal];
[cocoaCondition unlock];

我想要的只是使用一个简单的锁,可以从不同的线程锁定和解锁,所以我知道我需要为此使用 NSCondition,苹果文档说检查条件是为了格外小心,甚至如果您不合乎逻辑地使用它(来自苹果文档:“为了避免由这些虚假信号引起的问题,您应该始终将谓词与您的条件锁结合使用”)。

方法之间存在依赖关系,但在两种方式中都是如此,这意味着在另一个方法释放锁之前,没有人可以完成他们的工作主体(这可能会在从主体调度的第三个线程上释放锁定它的方法的工作)。

  1. 是否可以等待两种方法的条件并在两种方法结束时发出信号?

  2. 如果我有 3 个方法 1 线程同时等待,它们将以什么顺序进入工作主体?我猜这是按照他们进入等待的顺序,我是对的吗?

最佳答案

首先,您的代码在此处的另一篇文章之后运行良好 How does the NSCondition work? .

二、不打电话

 //[cocoaCondition wait];

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

关于ios - NSCondition - 多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11504591/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com