首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSCondition -多线程

NSCondition -多线程
EN

Stack Overflow用户
提问于 2012-07-16 12:44:45
回答 1查看 859关注 0票数 3

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

方法1:

代码语言:javascript
复制
[cocoaCondition lock];
while (someConditionIsTrue)
    [cocoaCondition wait];

// Do real work here.

[cocoaCondition unlock];

方法2:

代码语言:javascript
复制
[cocoaCondition lock];
timeToDoWork++;
someConditionIsTrue = NO;
[cocoaCondition signal];
[cocoaCondition unlock];

我想要的只是使用一个简单的锁,可以从不同的线程锁定和解锁,因此我理解我需要使用NSCondition,苹果文档说,检查条件也是非常谨慎的,即使您在逻辑上不使用它(来自apple:“为了避免这些虚假信号造成的问题,您应该始终在条件锁的同时使用谓词”)。

方法之间存在依赖关系,但在这两种情况下都是如此,这意味着在另一个方法释放锁之前,没有人能够完成他们的工作(这可能在锁定锁的方法的主体上被分派到第三个线程上释放)。

  1. 是否可以在这两种方法的条件下等待,并在两种方法的末尾发出信号?
  2. 如果我有3个method1线程同时等待,它们将以什么顺序进入工作主体?我想这是按照他们进入等待的顺序,我是对的吗?
EN

回答 1

Stack Overflow用户

发布于 2017-02-13 04:52:09

首先,您的代码在这里的另一篇文章中很好地工作,How does the NSCondition work?

第二,不要打电话

代码语言:javascript
复制
 //[cocoaCondition wait];

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11504591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档