NSLock死锁及解决办法
代码如下:
输出结果:1
这就照成了死锁
原因如下:由于当前线程运行到第一个lock加锁,现在再次运行到lock同样的锁,需等待当前线程解锁,把当前线程挂起,不能解锁
NSLock是非递归锁,当同一线程重复获取同一非递归锁时,就会发生死锁
解决办法:
我们可以用NSRecursiveLock或者@synchronized替代NSLock
因为NSRecursiveLock或者@synchronized都是递归锁,
递归锁:它允许同一线程多次加锁,而不会造成死锁。
原文:https://blog.csdn.net/qq_14927837/article/details/88868559