@synchronized如何工作?

时间:2011-08-09 00:24:05

标签: iphone objective-c multithreading

  

可能重复:
  How does @synchronized lock/unlock in Objective-C?

我有一个创建多个对象的应用程序。这些对象中的每一个基本上都在不同的线程中运行,并在NSMutableArray上运行,@synchronized是一个单独的类的一部分。这个类中有几种不同的方法可以枚举和改变数组,并且正如预期的那样,多个线程对此不起作用。我已经尝试在{{1}}块中包围所有方法体,因为我在某处读取了将方法锁定到一个线程的情况,但它似乎没有帮助。如何确保一次只有一个线程访问这些方法?

1 个答案:

答案 0 :(得分:4)

我不能比Apple更好地说出来。请查看“使用@synchronized指令”部分。 http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Multithreading/ThreadSafety/ThreadSafety.html

仔细检查您是否将同一个同步/锁定对象传递给synchronized,这样线程就不会访问同一部分。