---JAVA---锁相关---自旋锁、CLH锁、MCS锁
文章平均质量分 80
Laputa_SKY
这个作者很懒,什么都没留下…
展开
-
(3)MCS锁
http://xw-z1985.iteye.com/blog/20646441、 为什么要引入MCS锁? 在NUMA架构体系下,访问remote memory的速度要远远慢于访问local memory的速度。如下图所示(引自Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy &...转载 2018-04-18 15:19:57 · 158 阅读 · 0 评论 -
(2)CLH锁
原文地址:http://xw-z1985.iteye.com/blog/20643721、为什么要引入CLH锁 在前一篇文章中,介绍了TAS、TTAS两种自旋锁。这两种锁的缺点是:任何一个处理器每一次对锁成功的访问(getAndSet(true)和set(false)任意一个方法的调用),都会将其他处理器的cache中的缓存失效掉。这样会导致以下后果:其他处理器无法再采用局部自旋的方式...转载 2018-04-18 15:18:57 · 181 阅读 · 0 评论 -
自旋锁和缓存一致性
http://xw-z1985.iteye.com/blog/20555521、两种自旋锁的实现:TAS和TTAS1.1 TASclass TasLock { AtomicBoolean state = new AtomicBoolean(false); void lock() { while (state.getAndSet(tr...转载 2018-04-18 15:16:59 · 236 阅读 · 0 评论 -
自旋锁、排队自旋锁、MCS锁、CLH锁
自旋锁(Spin lock)自旋锁是指当一个线程尝试获取某个锁时,如果该锁已被其他线程占用,就一直循环检测锁是否被释放,而不是进入线程挂起或睡眠状态。自旋锁适用于锁保护的临界区很小的情况,临界区很小的话,锁占用的时间就很短。简单的实现import java.util.concurrent.atomic.AtomicReference;public class SpinLock { pri...转载 2018-04-18 15:12:35 · 244 阅读 · 0 评论