我使用的是NSPrivateQueueConcurrencyType
NSManagedObjectContext
,在以下情况下会发生死锁。
在后台线程上,会调用performBlock:。该块包含一个executeFetchRequest:error:
调用。
在执行该块时,主线程对performBlockAndWait:
进行调用。主线程等待,而后台线程的块完成。这很正常。
当在后台的线程块上进行executeFetchRequest:error:
调用时,会发生死锁。
我想象executeFetchRequest:error:
正在等待performBlockAndWait:
完成的主线程。
那是个虫子吗?或者我不明白什么?对我来说,所有这些代码似乎对NSPrivateQueueConcurrencyType
MOCs有效。
NSPrivateQueueConcurrentType不会自动使NSManagedObjectContext线程安全。如果您需要在多个线程上使用核心数据,您仍然应该为每个线程使用单独的上下文。