是否可以仅使用易失性变量来实现 ReadWriteLock?通过使用 Atomics 和 volatile?

问题描述 投票:0回答:1

在java中,是否可以仅使用volatile变量来实现ReadWriteLock?

否则,如何使用 Atomics 和 volatile 变量来实现它?

我有一个面试问题如何在不使用锁的情况下实现 ReadWriteLock。

当我尝试探索使用 Atomics 时,面试官避开了使用 atomics 并建议可以仅使用 volatile 变量来实现它。

我无法想出如何仅使用挥发物来实现它的方法。

java multithreading locking
1个回答
0
投票

Peterson 算法 是最简单的互斥算法之一,只使用易变变量。我想它可以转换为

ReadWriteLock
.

我还可以推荐 Herlihy 和 Shavit 的《多处理器编程艺术》:特别是第 2 章(它对彼得森锁有很好的解释)、第 7 章(关于自旋锁)、第 8 章(关于读者-作者锁)和第 5 章(关于共识数,它解释了volatile

Atomic*
之间的主要区别)。

© www.soinside.com 2019 - 2024. All rights reserved.