开发者社区 问答 正文

MDL 锁的实现中检测过程的步骤是什么?

MDL 锁的实现中检测过程的步骤是什么?

展开
收起
xi哈啥哈 2022-04-30 09:20:32 449 分享 版权
来自: 阿里技术
1 条回答
写回答
取消 提交回答
  • 死锁检测的思路是,首先广度优先,从当前线程等待的锁出发,遍历 MDL_lock 的等待队列和授予队列,看看是否有非当前线程获取的、与等待的锁不兼容的锁存在,如果这个持有线程与算法遍历的起点线程相同,那么锁等待链存在死锁;其次深度优先,从不兼容的锁的持有或等待线程出发,如果该线程也处于等待状态,那么递归重复前述过程,直到找到等待起点线程,否则判断不存在死锁。

    2022-05-08 11:18:04
    赞同 展开评论
问答地址: