Obj-c / Cocoa中的互斥体

时间:2012-07-05 16:01:43

标签: objective-c multithreading cocoa locking mutex

我对多线程编程非常陌生。可可。

我需要一个锁才能访问/修改NSMutableArray iVar。什么是最简单的方法呢?

虽然我在这里,你们有没有关于Obj-c / Cocoa的多线程编程的阅读? 谢谢。

2 个答案:

答案 0 :(得分:10)

使用@synchronized块:

@synchronized(MyArray)
{
    // thread safe code
}

Xcode有时无法识别此块,但请相信我,它有效!

有关详细信息,请参阅this文章。

答案 1 :(得分:1)

另一种方法是使用GCD和串行队列。

对于NSArray属性,编写使用专用串行队列的访问器。设置,并从后备存储中获取值。由于串行队列是FIFO,并且将按顺序运行块,因此可以提供对该属性的线程安全访问。