gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-30 19:44:03 25 4
gpt4 key购买 nike

我有一个 OSX 应用程序,我在其中使用父/子 NSManagedObjectContext 设置。子 MOC 具有 NSPrivateQueueConcurrencyType 并且是我主要使用的类型。父级设置为 NSMainQueueConcurrencyType

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

我该如何解决这个问题?我认为这种方法正是为这种情况而设计的,它只是将 block 排队到上下文的私有(private)队列中,然后适本地返回?

最佳答案

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

关于objective-c - 从两个线程调用时,NSManagedObjectContext performBlockAndWait 导致死锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16376543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com