Zig*_*yST 3 iphone synchronization objective-c nslock ios
我使用NSLock得到此错误,我试图通过使用unlockWithCondition(使用NSConditionLock)来规避,但无论我得到相同的结果:
*打破_NSLockError()进行调试.* - [NSLock unlock]:lock('(null)')从没有锁定它的线程解锁.
我不确定它是不是很糟糕,但我在做的是这样的:
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];
Run Code Online (Sandbox Code Playgroud)
所以"..shared code .."部分可以执行.我不明白为什么我得到这个错误.
谁能解释我做错了什么?它看起来应该完美无缺.
我想你在这里尝试使用锁作为信号量.锁意味着阻止后台线程和主线程同时访问某些内容.因此,持有锁的线程也必须释放(解锁)它.
如果您希望后台线程等待主线程上发生某些事情,请使用信号量.
使用GCD信号量获得简单易用的信号量:https://developer.apple.com/library/ios/#documentation/General/Conceptual/ConcurrencyProgrammingGuide/OperationQueues/OperationQueues.html
| 归档时间: |
|
| 查看次数: |
5972 次 |
| 最近记录: |