读写线程数据结构的策略

时间:2010-12-13 23:22:43

标签: iphone objective-c

我有一个包含NSDictionary的类,并且我有一个线程将数据写入此NSDictionary。然后在其他时候,我有另一个视图控制器从类的NSDictionary中读取数据。

什么是使这个类中的数据成为线程安全的最佳目标-c方式,这样如果你要求数据“读取”,你就会得到正确的版本,即最后一个书面版本,而不是一个也许正在写入目前?

2 个答案:

答案 0 :(得分:1)

正如卡尔所说,@synchronized是一种选择。

如果您的目标是iOS 4.0+,则另一个使用Grand Central Dispatch队列来管理从多个线程/队列对共享数据结构的访问。 WWDC 2010 Session 211视频对此技术有很好的解释。

简而言之:您创建了一个自定义GCD队列(dispatch_queue_create()),其唯一职责是管理对共享数据结构的访问。然后,访问共享结构的所有代码必须从此队列中执行此操作。因为队列一次只执行一个代码块,所以没有两个线程可以同时访问数据结构。

答案 1 :(得分:0)

我想你正在寻找@synchronize