我正在使用 NSPrivateQueueConcurrencyType
NSManagedObjectContext
并且在以下情况下会发生死锁。
在后台线程上,调用performBlock:。该 block 包含一个 executeFetchRequest:error:
调用。
当该 block 正在执行时,主线程会调用performBlockAndWait:
。当后台线程的 block 完成时,主线程等待。这很正常。
当对后台线程 block 进行executeFetchRequest:error:
调用时,会发生死锁。
我想象 executeFetchRequest:error:
正在等待主线程的 performBlockAndWait:
完成。
这是一个错误吗?或者我不明白什么?对我来说,所有这些代码对于 NSPrivateQueueConcurrencyType
MOC 似乎都是有效的。
最佳答案
NSPrivateQueueConcurrencyType 不会自动使 NSManagedObjectContext 线程安全。如果您需要在多个线程上使用 Core Data,您仍然应该为每个线程使用单独的上下文。
关于iphone - 在两个线程上使用 NSPrivateQueueConcurrencyType 托管对象上下文时出现死锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9371847/