addObject、objectForKey 都需要。 copy、allValues 等方法需要吗?
1
ai277014717 2018-02-08 15:48:54 +08:00
如果 copy 或者 allValues 时 remove 了一个或者 removeAll,或者加了一个或多个。理论上有可能发生的吧。
如果 copy 或者 allValues 时不需要保证数据完整性,不需要加,需要的话就加呗。 |
2
miketeam 2018-02-08 19:46:31 +08:00 via iPhone
是这样的,如果你开启多线程,然后有读有改的情况下,go 里面都是加读写锁,iOS 的话可以使用 yykit 里面的 threadsafearray,哪里面就是用了锁。如果你不想用锁,参考 cocoalumberjack 这个框架,使用队列同步的方式。你对数组和字典的读写和人家对文件的读写不是一会是么?你可以看看,最后,你倒是说说你的使用场景啊!加锁的性能要次点
|
3
Alchemistxxd 2018-02-20 23:17:51 +08:00
多线程的情况下推荐在同一个子系统里,将所有子系统内的 queue,set target 到同一个 serial q 上,可以避免加锁,也可以避免 Context 切换带来额外的开销。
|