【发布时间】:2012-07-05 16:01:42
【问题描述】:
我对多线程编程和可可还很陌生。
我需要一个锁来访问/修改NSMutableArray iVar。最简单的方法是什么?
当我在这里的时候,你们有一些关于使用 Obj-c/Cocoa 进行多线程编程的读物吗? 谢谢。
【问题讨论】:
标签: objective-c multithreading cocoa locking mutex
我对多线程编程和可可还很陌生。
我需要一个锁来访问/修改NSMutableArray iVar。最简单的方法是什么?
当我在这里的时候,你们有一些关于使用 Obj-c/Cocoa 进行多线程编程的读物吗? 谢谢。
【问题讨论】:
标签: objective-c multithreading cocoa locking mutex
使用@synchronized 块:
@synchronized(MyArray)
{
// thread safe code
}
Xcode 有时无法识别此块,但相信我,它有效!
更多信息可以阅读this文章。
【讨论】:
另一种方法是使用 GCD 和串行队列。
对于您的 NSArray 属性,写入使用私有串行队列的访问器。设置并从后备存储中获取值。由于串行队列是先进先出的,并且将顺序运行块,这提供了对属性的线程安全访问。
【讨论】:
dispatch_sync!如果从当前队列调用,会导致死锁。