我第一次开始控制队列,感觉我对如何使用它们有了很好的掌握,并感谢 Apple 让它们非常易于使用。
然而,我遇到的是多个线程读取和写入相同对象的挑战。在这个问题中,我得到了这个很好的答案@synchronized
,这让我要求大家确认一下,以确保我了解vs的优缺点GCD dispatch_barrier_async
。
这是我的看法:
@synchronized
PRO@synchronized
:只要您有访问/指向它的指针,您就可以包装任何对象,从而可以轻松地从程序中的不同对象安全地处理共享数据模型
PRO:受 iOS 4 支持(可能更早)
`dispatch_barrier_async` with custom DISPATCH_QUEUE_CONCURRENT
PRO : 比 @synchronized 快
CON:DISPATCH_QUEUE_CONCURRENT 仅在 iOS 5 中可用(如此处所述),因此不适用于支持 iOS 4
CON:在控制来自许多其他对象的对象的读/写时不太容易使用,因为队列最容易仅对创建它们的对象可用(无需做一些工作来绕过这个限制)
总之,考虑到上述情况,最好的工具取决于程序的需要。
如果有人有什么要补充或指出的,我将不胜感激。