我正在使用NSPrivateQueueConcurrencyType
NSManagedObjectContext
,并且在以下情况下会发生死锁。
在后台线程上,调用performBlock :.该块包含executeFetchRequest:error:
个调用。
当该块正在执行时,主线程会调用performBlockAndWait:
。主线程在后台线程的块完成时等待。这很正常。
当在后台的线程块上进行executeFetchRequest:error:
调用时,会发生死锁。
我想executeFetchRequest:error:
正在等待performBlockAndWait:
完成的主线程。
这是一个错误吗?或者我不明白什么?对我来说,所有这些代码似乎都适用于NSPrivateQueueConcurrencyType
MOC。
答案 0 :(得分:2)
NSPrivateQueueConcurrencyType不会自动使NSManagedObjectContext成为线程安全的。如果需要在多个线程上使用Core Data,则仍应为每个线程使用单独的上下文。