CLH有两种不同的含义,具体如下:
CLH锁
CLH是一种基于单向链表的高性能、公平的自旋锁。
在申请加锁时,线程通过前驱节点的变量进行自旋,直到前驱节点解锁后,当前节点才会结束自旋并进行加锁。
在SMP(对称多处理)架构下,CLH锁更具有优势。
在NUMA(非一致性内存访问)架构下,如果当前节点与前驱节点不在同一CPU模块下,跨CPU模块会带来额外的系统开销,此时MCS锁可能更适用于NUMA架构。
CLH同步队列
CLH也可以指一个FIFO(先进先出)双向队列,用于同步状态的管理。
在AQS(AbstractQueuedSynchronizer)中,CLH同步队列用于存储等待获取同步状态的线程。
当线程获取同步状态失败时,AQS会将其构造成一个节点并加入到CLH同步队列,同时阻塞该线程。
当同步状态释放时,AQS会唤醒队列中的首节点,使其再次尝试获取同步状态。
根据具体的上下文,CLH可以指代上述两种不同的系统或数据结构。
声明:
本站内容均来自网络,如有侵权,请联系我们。