开发者社区 问答 正文

为什么需要将在快速路径上获取的锁物化,从MDL_lock::m_fast_path_state中移出

为什么需要将在快速路径上获取的锁物化,并从MDL_lock::m_fast_path_state中移出,以走慢路径获取"obtrusive"锁?

展开
收起
不吃核桃 2024-08-05 23:43:45 36 分享 版权
1 条回答
写回答
取消 提交回答
  • 在走慢路径获取"obtrusive"锁之前,需要将当前线程之前通过快速路径获取的锁物化,即从MDL_lock::m_fast_path_state的bitmap中移出,并加入到MDL_lock::m_granted链表中。这是因为MDL_lock::m_fast_path_state中的bitmap无法区分不同线程持有的锁,而当前线程获取的多个锁之间是不构成锁冲突的。因此,在通过bitmap判断锁冲突之前,需要确保MDL_lock::m_fast_path_state中的ticket都是属于其他线程的,以便正确地进行锁冲突检测。

    2024-08-06 08:11:10
    赞同 1 展开评论
问答地址: