在我的应用程序中,我创建了一个NSManagedObjectContext实例,两个线程可以访问此实例,他们都需要提交更改。如果在两个线程中同时调用save方法怎么办?上下文中所有NSManagedObject实例的属性会发生什么?
答案 0 :(得分:3)
你不应该这样做。为每个thread.CoreData创建两个单独的NSManagedObjectContext不是线程安全的..在使用CoreData进行多线程处理之前阅读本文档
答案 1 :(得分:1)
NSPersistentStoreCoordinator将在多个线程或队列上处理NSManagedObjectContexts的正确锁定,但NSManagedObjectContext本身应该只在一个线程上使用,它创建的线程(常见的错误是在主线程上创建一个MOC然后将其传递给另一个线程 - 不要这样做。)
正如Tony指出的那样,你想要为每个线程拥有一个MOC,共享一个持久存储协调器,或者使用iOS 5中引入的核心数据的新并发模式,允许你创建子上下文和/或使用新的performBlock和performBlockAndWait方法,保证上下文在正确的线程上执行。
直接回答你的问题是“谁知道”。行为将是未定义的,您几乎肯定会遇到随机崩溃和/或死锁。