解决在加载表视图时偶尔发生的核心数据死锁问题

时间:2015-08-02 17:31:04

标签: ios multithreading core-data deadlock nsmanagedobjectcontext

我使用的是非常常见的核心数据堆栈。 Child Mocs - >主要Moc - >背景Moc - > PSC

我从一段时间以来一直面临核心数据死锁,当我点击我的表视图的单元格打开另一个表视图时,屏幕会冻结,我的表视图都使用FRC。看看线程看起来我的所有3个托管对象上下文都处于死锁状态。我现在尝试多次调试但无济于事。

主题1:主要Moc

主题8:Child Moc

主题10:背景Moc

非常感谢任何帮助。

Main Thread(1/2)

Main Thread(2/2)

Thread 8:Child Moc, Thread 10:Background Moc

1 个答案:

答案 0 :(得分:0)

我认为当并发访问不同的持久存储时会出现问题(在我的情况下为2)。第一个持久存储是通过Background Moc访问的,同时有一个获取请求通过与第二个持久存储有关的Child Moc流动。

我没有从Background Moc发出有关的第一个获取请求,并将其移动到其中一个Child Mocs并解决了死锁问题。

我仍然不知道确切的原因,但我能够解决这个问题。

希望这有帮助。