NSCondition vs信号量,什么是更客观的C-ish?

时间:2012-12-03 18:32:41

标签: objective-c ios thread-safety

我很确定我理解NSCondition和信号量之间的区别(来自c api)。 哪一个更常用于Apple开发人员,尤其是iPhone开发人员?

2 个答案:

答案 0 :(得分:7)

根据我的经验,“不”。无论出于何种原因,信号量只是不常用于人气竞赛的重要性。

虽然我是dispatch_semaphore的忠实粉丝。非常聪明的实施。

答案 1 :(得分:3)

确定dispatch_semaphore

同步对资源的并发访问的objc方法是避免锁定或@syncronize如果可能并使用队列,串行或并发(ios5>)

如果多个线程需要访问共享资源,则可以将其分派到公共串行队列。通过以这种方式访问​​资源,我们避免了没有内核陷阱的并发访问。

可以使用并发队列(我想在wwdc11视频中显示),例如当多个线程可以同时访问资源进行读取时,我们需要一个同步点进行写入。使用障碍可以很容易地实现这一点:写入的线程将等到所有读者完成后,将在并发队列上专门写入资源,然后再次,concurrents读者可以访问资源。

我认为这是一个很好的资源https://developer.apple.com/library/mac/#documentation/General/Conceptual/ConcurrencyProgrammingGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40008091,用于以objc方式进行多线程处理