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

标签 iphone ios core-data concurrency deadlock

我正在使用 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/

相关文章:

ios - 无法在 bundle 中加载 Nib - 错误的 nibname

ios - CoreData 子上下文、NSFetchedResultsController 和主线程

iphone - 核心数据和关系

iphone - 我在哪里可以找到 Windows 7 上的临时 iPhone 应用程序的崩溃日志

iphone - Xcode 与 Unity 连接

iphone - ios sdk 中的付款选项,无需应用内购买和 PayPal

ios - Mach O 链接错误 - 链接器命令失败,退出代码为 1(使用 -v 查看调用)

iphone - 标签首先完全显示,而不是像我也想要的那样淡入

ios - 如何使用 swift 2 在后台应用程序时更新位置

ios - .xcdatamodeld 文件未在 Xcode 中显示数据模型结构