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

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

概述我有一个OSX应用程序,我正在使用父/子NSManagedObjectContext设置.子MOC有NSPrivateQueueConcurrencyType,是我主要使用的那个.父级设置为NSMainQueueConcurrencyType 当我从后台线程调用子上下文的performBlockAndWait,同时从主线程调用它时,我得到死锁 – semaphore_wait_trap.暂停调试器 我有一个OSX应用程序,我正在使用父/子NSManagedobjectContext设置.子MOC有nsprivateQueueConcurrencyType,是我主要使用的那个.父级设置为NSMainQueueConcurrencyType

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

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

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

以上是内存溢出为你收集整理的objective-c – NSManagedObjectContext performBlockAndWait从两个线程调用时导致死锁全部内容,希望文章能够帮你解决objective-c – NSManagedObjectContext performBlockAndWait从两个线程调用时导致死锁所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1008186.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存