首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ios信号量等待不等待

ios信号量等待不等待
EN

Stack Overflow用户
提问于 2013-06-12 17:12:13
回答 2查看 3.7K关注 0票数 3

我在使用dispatch_semaphore_wait(..)时遇到问题。使用大于0的值创建信号量时

代码语言:javascript
复制
sema = dispatch_semaphore_create(2);
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    //signals here
});

dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
dispatch_release(sema);

等待不应该等待两个信号吗?在上面的代码中,它根本不等待,所以调用了释放,结果是崩溃!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-12 17:44:03

不,这不是它的工作方式。线程将在第三次等待时阻塞,直到前两个中的一个被通知为止。它是一种指定一次可以访问资源的线程数量的系统。更多信息here

如果你想以你所描述的方式等待,我想你可以使用NSCondition类。

票数 4
EN

Stack Overflow用户

发布于 2013-06-13 03:50:35

使用分派组而不是信号量来获得此行为。

在开始任务之前,通过调用dispatch_group_enter()两次将组初始化为大小2,dispatch_group_wait()将等待对dispatch_group_leave()的两次调用才会返回。

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

https://stackoverflow.com/questions/17061748

复制
相关文章

相似问题

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