可能重复:
@synchronized() 做什么?
我有一个关于什么@synchronized
真正起作用以及什么最适合我的应用程序的问题。
我有一个NSMutableArray
我将在后台线程中变异并在前台线程中访问。如果我在改变它的内容时访问数组,如果这意味着我可以从背景突变中获取更新的值,我希望对访问数组有一点控制。但是,我不能 100% 确定NSLock
s 和 s 的@synchronized
具体工作方式。
如果这是不可能的,是否可以改变数组的副本,完成后,在设置副本的内容时锁定属性/实例变量,以冻结任何访问器调用?
基本上,@synchronized(myArray) 会冻结任何访问器调用(让调用挂起,直到锁释放然后执行)?
此外,是否可以使用 NSLock 锁定实例变量或属性?从我所见,它似乎只锁定代码块。