【问题标题】:How does @synchronized work? [duplicate]@synchronized 是如何工作的? [复制]
【发布时间】:2011-10-22 20:08:11
【问题描述】:

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

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

【问题讨论】:

标签: iphone objective-c multithreading


【解决方案1】:

我不能比苹果更好地说明这一点。查看“使用@synchronized 指令”部分。 http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Multithreading/ThreadSafety/ThreadSafety.html

仔细检查您是否将相同的同步/锁定对象传递给同步对象,以便线程不会访问同一部分。

【讨论】:

  • 据我所知,在 @synchronized 中包围我的方法体应该可以工作。我错过了什么吗?
  • 你是对的。你确定你用@synchronized包围了你代码的所有必需部分吗?您能否确认该块与它们用于锁定的对象相同?
  • 提示:您可以将数组作为锁定对象传递。
猜你喜欢
  • 1970-01-01
  • 2016-04-13
  • 2012-06-22
  • 1970-01-01
  • 2016-01-19
  • 2014-08-25
  • 2011-10-02
  • 2011-04-15
  • 2011-04-26
相关资源
最近更新 更多