开发者社区 问答 正文

CAS操作成功后,如何将MDL_ticket与MDL_lock关联

CAS操作成功后,如何将MDL_ticket与MDL_lock关联,并更新线程的MDL_ticket_store?

展开
收起
不吃核桃 2024-08-05 23:43:45 40 分享 版权
1 条回答
写回答
取消 提交回答
  • CAS操作成功后,可以直接将MDL_ticket的m_lock成员设置为指向MDL_lock的指针,无需加锁保护,因为MDL_lock::m_fast_path_state在此场景中充当了引用计数器的角色。接着,将m_is_fast_path标志设置为true,表示该MDL_ticket是通过快速路径获取的。然后,将MDL_ticket添加到线程的MDL_ticket_store中,通常是通过push_front方法,同时设置MDL_ticket的持续时间(duration)和MDL_request的ticket成员。最后,通过mysql_mdl_set_status函数更新MDL_ticket的性能监控接口(PSI)状态为GRANTED。

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