关于内存融合cache fusion中锁模式的一些思考

  1. 集群中不可能即存在写锁,又存在读锁。这个从读写锁的语义上已经定义。
  2. 集群中只能存在一个人持有写锁,其他人再申请写锁时必须要释放当前写锁。
  3. 集群中可能存在多个读锁。
  4. 集群中存在脏块时,可能存在(一个或多个)读锁(此时脏块持有者不一定拥有读锁,可能是其他人持有读锁),或者一个写锁(此时脏块持有者必然持有写锁)。
  5. 集群中无人持有写锁(无脏块)。此时申请写锁,直接多盘,并获取写锁。
  6. 集群中无人持有写锁(有脏块)。此时申请写锁,由当前脏块持有者转发数据块给申请者,并获取写锁。
  7. 集群中无人持有读锁(无脏块)。此时申请读锁,直接读盘,并获取读锁。
  8. 集群中无人持有读锁(有脏块)。此时申请读锁,由当前脏块持有者转发数据给申请者,并获取读锁。
  9. 集群中只能有一个人持有写锁。如果其他人申请写锁,必须等到当前写锁持有者释放锁之后,才能获取锁。在内存融合过程中,申请者发出写锁申请后,只可能收到一个人(那个人就是当前写锁持有者)发送过来的PCM_REPLY_BUFFER消息或者是收不到任何消息(此时阻塞等待释放写锁应答)。
  10. 集群中可能有多个人持有读锁(无脏块)。此时,如果有人继续申请读锁,可以直接获取读锁,然后直接读盘。
  11. 集群中可能有多个人持有读锁(有脏块)。此时,如果有人继续申请读锁,可以直接获取读锁,并由脏块持有者转发数据块给申请者。
  12. 集群中可能有多个人持有读锁(无脏块)。此时,如果有人继续申请写锁,那么需要通知其他读锁持有者释放读锁,等到申请者收集到所有读锁持有者的释放应答后,并由指定读锁持有者转发数据块给申请者,再加写锁。
  13. 集群中可能有多个人持有读锁(有脏块)。此时,如果有人继续申请写锁,那么需要通知其他读锁持有者释放读锁,等到申请者收集到所有读锁持有者的释放应答后,并由当前脏块持有者转发数据块给申请者,再加写锁。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值