ios NSLock死锁及解决办法

NSLock死锁及解决办法

代码如下:


输出结果:1

这就照成了死锁

原因如下:由于当前线程运行到第一个lock加锁,现在再次运行到lock同样的锁,需等待当前线程解锁,把当前线程挂起,不能解锁

NSLock是非递归锁,当同一线程重复获取同一非递归锁时,就会发生死锁

解决办法:

我们可以用NSRecursiveLock或者@synchronized替代NSLock

因为NSRecursiveLock或者@synchronized都是递归锁,

递归锁:它允许同一线程多次加锁,而不会造成死锁。




原文:https://blog.csdn.net/qq_14927837/article/details/88868559

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。