ios NSLock死锁及解决办法

作者: 小熊_07cb | 来源:发表于2019-03-28 15:02 被阅读34次

NSLock死锁及解决办法

代码如下:

输出结果:1

这就照成了死锁

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

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

解决办法:

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

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

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

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

相关文章

  • ios NSLock死锁及解决办法

    NSLock死锁及解决办法 代码如下: 输出结果:1 这就照成了死锁 原因如下:由于当前线程运行到第一个lock加...

  • iOS常见锁对象

    iOS常见锁对象: 1.互斥锁NSLock NSLock* lock = [[NSLock alloc] init...

  • 线程锁

    @synchronized 是递归锁,类似NSRecursiveLock,递归调用不会引起死锁,而NSLock是非...

  • iOS 常用的锁(Lock)讲解

    转自: iOS 常见知识点(三):Lock NSLock NSLock 遵循 NSLocking 协议,lock ...

  • iOS_Lock

    iOS-Lock 1. NSLock NSLock Apple Guide lock 和 unlock 需要在同一...

  • NSRecursiveLock递归锁

    递归锁,它允许同一线程多次加锁,而不会造成死锁。以下的代码如果用NSLock就会造成死锁: //普通线程锁NSLo...

  • 死锁及解决办法

    死锁概念及产生原理概念:多个并发进程因争夺系统资源而产生相互等待的现象。原理:当一组进程中的每个进程都在等待某个事...

  • 线程同步

    1.dispatch_semaphore(信号量)的理解及使用2.iOS 多线程同步策略之-----锁NSLock...

  • 谈下Objective C都有哪些锁机制,你一般用哪个?

    原文:iOS面试题大全 1)NSLock iOS中对于资源抢占的问题可以使用同步锁NSLock来解决,使用时把需要...

  • iOS都有哪些锁

    iOS都有哪些锁:synchronized 、atomic、oSSpinLook、NSLock、dispatch_...

网友评论

    本文标题:ios NSLock死锁及解决办法

    本文链接:https://www.haomeiwen.com/subject/kfrmfqtx.html