【发布时间】:2016-07-04 07:55:14
【问题描述】:
假设我们有一个 NSMutableArray 例如在一个单例对象上。显然可以从多个不同的线程调用单例对象。
假设我们需要单例用户能够添加或删除对象。或者也许我们有一个需要设置和读取的自定义对象。
处理这些情况的正确方法是什么?如果单例上的每个线程不安全属性都有自己的串行/并发队列,然后覆盖 NSMutableArray 的 addObject 和 removeObject 函数,将读取包装在 dispatch_sync 中,并写入 dispatch_async(到串行队列)或 dispatch_barrier_async(到并发队列)?
1) 每个线程不安全的属性都需要自己的队列吗?或者它至少应该在性能方面有一个。如果多个属性共享同一个队列,它会比必要的慢。
2) 在什么情况下不需要这种线程保护。曾经?或者线程不安全的属性是否应该总是覆盖它们的 setter 和 getter。
【问题讨论】:
标签: objective-c multithreading cocoa-touch thread-safety