我很确定我理解NSCondition和信号量之间的区别(来自c api)。 哪一个更常用于Apple开发人员,尤其是iPhone开发人员?
答案 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方式进行多线程处理