在java中,是否可以仅使用volatile变量来实现ReadWriteLock?
否则,如何使用 Atomics 和 volatile 变量来实现它?
我有一个面试问题如何在不使用锁的情况下实现 ReadWriteLock。
当我尝试探索使用 Atomics 时,面试官避开了使用 atomics 并建议可以仅使用 volatile 变量来实现它。
我无法想出如何仅使用挥发物来实现它的方法。
Peterson 算法 是最简单的互斥算法之一,只使用易变变量。我想它可以转换为
ReadWriteLock
.
我还可以推荐 Herlihy 和 Shavit 的《多处理器编程艺术》:特别是第 2 章(它对彼得森锁有很好的解释)、第 7 章(关于自旋锁)、第 8 章(关于读者-作者锁)和第 5 章(关于共识数,它解释了volatile
和
Atomic*
之间的主要区别)。