开发者社区> 问答> 正文

当其他线程释放锁时,会执行哪些与MDL锁相关的操作?

当其他线程释放锁时,会执行哪些与MDL锁相关的操作?

展开
收起
不吃核桃 2024-08-06 08:11:09 20 0
1 条回答
写回答
取消 提交回答
  • 当其他线程释放持有的不兼容类型锁时,它们会一并释放所有锁。根据锁是通过fast path还是slow path获取的,系统会恢复MDL_lock::m_fast_path_state的状态和更新MDL_lock::m_granted链表。如果MDL_lock::m_waiting队列中存在等待的ticket,则会调用MDL_lock::reschedule_waiters()方法来唤醒可以获取到锁的线程,并设置这些线程的等待状态为GRANTED。

    2024-08-06 14:45:47
    赞同 2 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
多IO线程优化版 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载