自旋锁中的分层锁技术解析
1. 分层锁概述
在当今许多缓存一致性架构中,处理器通常被组织成集群。集群内的通信速度显著快于集群间的通信速度。例如,一个集群可能对应一组通过快速互连共享内存的处理器,或者对应多核架构中单个核心上运行的线程。分层锁(Hierarchical Locks)正是为了利用这种局部性差异而设计的,它考虑了架构的内存层次结构和访问成本。
为了简化讨论,我们假设架构具有两级内存层次结构,即由多个处理器集群组成,同一集群内的处理器通过共享缓存进行高效通信,而集群间的通信成本则高得多。同时,我们假设每个集群都有一个唯一的集群 ID,每个线程都可以通过 ThreadID.getCluster() 方法获取该 ID,并且线程不会在集群之间迁移。
2. 分层回退锁(Hierarchical Backoff Lock)
2.1 原理
测试 - 测试 - 设置(test–and–test–and–set)锁可以很容易地适应集群化环境。假设锁当前由线程 A 持有,如果 A 所在集群的线程具有更短的回退时间,那么当锁被释放时,本地线程比远程线程更有可能获取到锁,从而减少锁所有权切换所需的总时间。
2.2 代码实现
public class HBOLock implements Lock {
private static final int LOCAL_MIN_DELAY = ...;
private static final int LOCAL_MAX_DELAY = ...;
pr
超级会员免费看
订阅专栏 解锁全文
1288

被折叠的 条评论
为什么被折叠?



