我想使用一个ManagedObjectContext
作为主线程,另一个使用NSOperation
为后台线程分开,正如Apple建议的那样。并且,每个ManagedObjectContext
共享相同的持久存储。
主线程上可能会发生提取,因为我使用Core Data来填充表视图。
在后台,我需要访问存储图像名称的NSManagedObject
属性。然后,后台线程将创建并缓存这些图像,这是拥有后台线程的主要原因。
鉴于此,如果两个线程都试图访问持久性存储,是否存在任何危险(如锁定),因为两者都可能同时从中获取数据?
答案 0 :(得分:1)
每个线程都需要自己的托管对象上下文,但所有线程都需要共享一个持久性存储协调器 - 这将解决您所描述的潜在问题。请参阅Core Data Concurrency Programming Guide。
中的其他信息答案 1 :(得分:0)
只要每个帖子都使用自己的NSManagedObjectContext
,让他们共享NSPersistentStoreCoordinator
就完全安全了。 NSManagedObjectContext
将根据需要处理持久存储的所有适当锁定。但是,您必须注意不要在线程之间共享NSManagedObject
。
答案 2 :(得分:0)
两个不同的MOC可以同时访问同一个PSC进行读取。
但是对于写入,如果有可能并发写入,则需要lock
和unlock
持久性存储协调器。