gpt4 book ai didi

iphone - IOS SDK - NSLock 消息 : "unlocked from thread which did not lock it"

转载 作者:可可西里 更新时间:2023-11-01 17:10:41 24 4
gpt4 key购买 nike

我在使用 NSLock 时遇到了这个错误,我试图通过使用 unlockWithCondition(使用 NSConditionLock)来规避这个错误,但无论如何我得到了相同的结果:

* Break on _NSLockError() to debug. * -[NSLock unlock]: lock ( '(null)') unlocked from thread which did not lock it.

我不确定它是否不好,但我正在做的是:

new Thread:
[lockA lock];//waiting unlock
[lockB lock];//waiting unlock
..shared code..
[lockA unlock];
[lockB unlock];

in Main Thread:
//Do two HTTP request.

//when request respond, I unlock the locks in respective threads with [lockA unlock];
[lockB unlock];

因此“..shared code..”部分可以执行。我不明白为什么会出现此错误。

谁能解释我做错了什么?它看起来应该可以完美运行。

最佳答案

我认为您在这里试图将锁用作信号量。锁是为了阻止后台线程和主线程同时访问某些东西。因此,持有锁的线程也必须释放(解锁)它。

如果您希望后台线程等待主线程发生某些事情,请使用信号量。

将 GCD 信号量用于简单易用的信号量:https://developer.apple.com/library/ios/#documentation/General/Conceptual/ConcurrencyProgrammingGuide/OperationQueues/OperationQueues.html

关于iphone - IOS SDK - NSLock 消息 : "unlocked from thread which did not lock it",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9520421/

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