自旋锁中的分层锁技术解析
在现代多核与多处理器系统中,处理器通常被组织成集群,同一集群内的通信速度远快于集群间的通信速度。为了适应这种架构特点,分层锁应运而生。分层锁能够考虑到架构的内存层次结构和访问成本,从而更高效地进行锁操作。下面将详细介绍分层锁的相关内容。
分层锁概述
许多现代的缓存一致性架构将处理器组织成集群。例如,一个集群可能是一组通过快速互连共享内存的处理器,或者是多核架构中单个核心上运行的线程。分层锁的设计就是为了利用这种局部性差异,以减少锁所有权切换的总体时间。
分层回退锁(HBOLock)
分层回退锁是基于测试 - 测试 - 设置锁进行改进的。其核心思想是,如果持有锁的线程所在集群的其他线程具有更短的回退时间,那么当锁被释放时,本地线程更有可能获取到锁,从而减少锁所有权切换的时间。
以下是 HBOLock 类的代码实现:
public class HBOLock implements Lock {
private static final int LOCAL_MIN_DELAY = ...;
private static final int LOCAL_MAX_DELAY = ...;
private static final int REMOTE_MIN_DELAY = ...;
private static final int REMOTE_MAX_DELAY = ...;
private static final int FREE = -1;
AtomicIn
超级会员免费看
订阅专栏 解锁全文
1290

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



