Eri*_*k S 10 iphone multithreading locking objective-c grand-central-dispatch
我的应用程序大量使用GCD,几乎所有内容都分散在由调度处理的小任务中.但是,基础数据模型主要是读取的,只是偶尔写入.
我目前使用锁来防止在阅读时更改关键数据结构.但是在今天看了一些锁之后,我发现了NSConditionLock和一些关于读写锁的页面.后者正是我所需要的.
我找到了这个实现:http://cocoaheads.byu.edu/wiki/locks.我的问题是,这个实现是否适用于GCD,看到它使用PThreads?
Ken*_*ses 24
它仍然有效.pthreads是线程API,是Mac OS X上所有其他使用线程的API的基础.(在那里有Mach线程激活,但那是SPI,而不是API.)无论如何,pthreads锁并不需要你使用pthreads线程.
但是,从iOS 5开始,GCD提供了更好的选择:dispatch_barrier_async().基本上,您有一个私有并发队列.您以正常方式向其提交所有读取操作.您可以使用barrier例程向其提交写入操作.当当!读写锁定.
如果您有权访问Session 210 - Mastering Grand Central Dispatch的WWDC 2011会话视频,您可以了解更多相关信息.
| 归档时间: |
|
| 查看次数: |
6476 次 |
| 最近记录: |