在两个线程上使用NSPrivateQueueConcurrentType托管对象上下文时出现死锁



我使用的是NSPrivateQueueConcurrencyType NSManagedObjectContext,在以下情况下会发生死锁。

在后台线程上,会调用performBlock:。该块包含一个executeFetchRequest:error:调用。

在执行该块时,主线程对performBlockAndWait:进行调用。主线程等待,而后台线程的块完成。这很正常。

当在后台的线程块上进行executeFetchRequest:error:调用时,会发生死锁。

我想象executeFetchRequest:error:正在等待performBlockAndWait:完成的主线程。

那是个虫子吗?或者我不明白什么?对我来说,所有这些代码似乎对NSPrivateQueueConcurrencyType MOCs有效。

NSPrivateQueueConcurrentType不会自动使NSManagedObjectContext线程安全。如果您需要在多个线程上使用核心数据,您仍然应该为每个线程使用单独的上下文。

最新更新