我非常确定我理解NSCondition和信号量之间的区别(来自c)。哪一个是苹果开发人员,尤其是iPhone开发人员更常用的?
发布于 2012-12-04 02:35:15
根据我的经验,“都不是”。无论出于什么原因,信号量的使用对于受欢迎程度的竞争来说并不是很普遍。
不过,我是dispatch_semaphore的铁杆粉丝。非常巧妙的实现。
发布于 2012-12-04 03:11:15
肯定是dispatch_semaphore
同步对资源的并发访问的一种方法是避免锁定或在可能的情况下使用@syncronize,并使用队列、串行或并发(ios5 >)
如果多个线程需要访问一个共享资源,它们可以分派到一个公共的串行队列。通过以这种方式访问资源,我们避免了没有内核陷阱的并发访问。
可以使用并发队列(我认为在wwdc11视频中显示了这一点),例如,当多个线程可以同时访问一个资源进行读取时,但我们需要一个同步点来进行写入。这可以使用屏障轻松地实现:写入的线程将等待所有读取器完成,将独占地在并发队列上写入资源,之后,并发读取器可以访问资源。
我认为这是一个用objc方式进行多线程的很好的资源https://developer.apple.com/library/mac/#documentation/General/Conceptual/ConcurrencyProgrammingGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40008091。
https://stackoverflow.com/questions/13689467
复制相似问题