我有一个 OSX 应用程序,我在其中使用父/子 NSManagedObjectContext 设置。子 MOC 具有 NSPrivateQueueConcurrencyType
并且是我主要使用的类型。父级设置为 NSMainQueueConcurrencyType
当我在从主线程调用子上下文的同时从后台线程调用 performBlockAndWait
时,我遇到了死锁 – semaphore_wait_trap
。暂停调试器显示两个线程都停留在 performBlockAndWait
我该如何解决这个问题?我认为这种方法正是为这种情况而设计的,它只是将 block 排队到上下文的私有(private)队列中,然后适本地返回?
最佳答案
我通过创建一个串行队列来解决这个问题,然后通过它执行我所有的 performBlock 调用以确保它们不会相互混淆。老实说,我不确定这是否是好的做法,但它确实解决了我的特定情况的问题。
关于objective-c - 从两个线程调用时,NSManagedObjectContext performBlockAndWait 导致死锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16376543/