【发布时间】:2012-11-30 18:39:14
【问题描述】:
我有一个关于 @synchronized 的真正作用以及最适合我的应用程序的问题。
我有一个NSMutableArray,我将在后台线程中进行变异并在前台线程中访问。如果我在改变它的内容时访问数组,我希望对访问数组有一点控制,如果这意味着我可以从背景突变中获取更新的值。但是,我不能 100% 确定 NSLocks 和 @synchronized 具体是如何工作的。
如果不可能,是否可以改变数组的副本,完成后,在设置副本的内容时锁定属性/实例变量,以冻结任何访问器调用?
基本上,@synchronized(myArray) 会冻结任何访问器调用(让调用挂起,直到锁释放然后执行)?
另外,是否可以使用 NSLock 锁定实例变量或属性?从我所见,它似乎只锁定代码块。
【问题讨论】:
-
查看 Grand Central Dispatch...这是执行多线程数组逻辑的更好方法。
-
@borrrden 谢谢!这实际上就是我目前处理多线程逻辑的方式。希望其他人也能看到使用它。它很棒。
标签: objective-c ios thread-safety synchronized nslock