ios|ios NSLock死锁及解决办法
NSLock死锁及解决办法
代码如下:
文章图片
输出结果:1
这就照成了死锁
原因如下:由于当前线程运行到第一个lock加锁,现在再次运行到lock同样的锁,需等待当前线程解锁,把当前线程挂起,不能解锁
NSLock是非递归锁,当同一线程重复获取同一非递归锁时,就会发生死锁
解决办法:
我们可以用NSRecursiveLock或者@synchronized替代NSLock
因为NSRecursiveLock或者@synchronized都是递归锁,
递归锁:它允许同一线程多次加锁,而不会造成死锁。
【ios|ios NSLock死锁及解决办法】原文:https://blog.csdn.net/qq_14927837/article/details/88868559
推荐阅读
- 2020-04-07vue中Axios的封装和API接口的管理
- iOS中的Block
- 记录iOS生成分享图片的一些问题,根据UIView生成固定尺寸的分享图片
- 2019-08-29|2019-08-29 iOS13适配那点事
- Hacking|Hacking with iOS: SwiftUI Edition - SnowSeeker 项目(一)
- iOS面试题--基础
- 接口|axios接口报错-参数类型错误解决
- iOS|iOS 笔记之_时间戳 + DES 加密
- iOS,打Framework静态库
- 常用git命令总结