objective-c – NSManagedObjectContext performBlockAndWait从两个线程调用时导致死锁

前端之家收集整理的这篇文章主要介绍了objective-c – NSManagedObjectContext performBlockAndWait从两个线程调用时导致死锁前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个OSX应用程序,我正在使用父/子NSManagedObjectContext设置.子MOC有NSPrivateQueueConcurrencyType,是我主要使用的那个.父级设置为NSMainQueueConcurrencyType

当我从后台线程调用子上下文的performBlockAndWait,同时从主线程调用它时,我得到死锁 – semaphore_wait_trap.暂停调试器显示两个线程都停留在performBlockAndWait

我怎么能绕过这个?我认为这个方法是针对这种情况而设计的,只是将上下文的私有队列中的块排队然后适当地返回?

解决方法

我通过创建一个串行队列来解决这个问题,然后通过这个来完成所有的performBlock调用,以确保它们不会互相混乱.老实说,我不确定这是不是很好的做法,但它确实解决了我的特殊情况.

猜你在找的Xcode相关文章