在java中,是否可以只使用volatile变量来实现读写锁?否则,如何通过使用原子和易失性变量来实现它?我有一个面试问题,如何实现读写锁而不使用锁。当我试图探索使用原子时,采访者避开了使用原子,并建议可以只使用volatile变量来实现它。我想不出一个方法来实现它只与挥发物。
qpgpyjmq1#
Peterson's algorithm是一个最简单的互斥算法,它只使用volatile变量。我想它可以转换为ReadWriteLock。我也可以推荐The Art of Multiprocessor Programming by Herlihy and Shavit:特别是第2章(它对彼得森锁有很好的解释)、第7章(关于自旋锁)、第8章(关于读写器锁)和第5章(关于共识数,它解释了volatile和Atomic*之间的主要区别)。
ReadWriteLock
volatile
Atomic*
1条答案
按热度按时间qpgpyjmq1#
Peterson's algorithm是一个最简单的互斥算法,它只使用volatile变量。我想它可以转换为
ReadWriteLock
。我也可以推荐The Art of Multiprocessor Programming by Herlihy and Shavit:特别是第2章(它对彼得森锁有很好的解释)、第7章(关于自旋锁)、第8章(关于读写器锁)和第5章(关于共识数,它解释了
volatile
和Atomic*
之间的主要区别)。