文章“Atomic*.lazySet is a performance win for single writers”介绍了 lazySet
是一种弱 volatile 写入(从某种意义上说,它充当存储存储而不是存储加载栅栏)。但我不明白如何利用半 volatile 写入来提高并发队列性能。它究竟是如何提供超低延迟的 claimed by Menta-queue ?
我已经阅读了它的实现及其对堆栈溢出问题的声明:“How is lazySet in Java's Atomic* classes implemented”和“Atomic Integer's lazySet vs set”。
最佳答案
x86 上 volatile 写入的问题是它会发出完整的内存屏障,这会导致停顿,直到 store buffer。被排干。同时,x86 上的 lazySet
是一个简单的存储。它不需要刷新存储缓冲区中等待的所有先前存储,从而允许写入线程全速进行。
这在 Martin Thompson's article 中有一些描述。 .
关于java - 原子整数 lazySet 性能提升,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25840733/