文章“Atomic*.lazySet is a performance win for single writers”解释了lazySet
是一种弱易失性写入(在某种意义上它充当商店而不是商店负载围栏)。但我不明白利用半易失性写入如何提高并发队列性能。它究竟是如何提供claimed by Menta-queue的超低延迟?
我已经阅读了它的实现,并且它在堆栈溢出问题上声称:“How is lazySet in Java's Atomic* classes implemented”和“Atomic Integer's lazySet vs set。”
答案 0 :(得分:1)
x86上的易失性写入问题是它会发出完全的内存屏障,导致在store buffer耗尽之前停顿。同时x86上的lazySet
是一个简单的商店。它不需要刷新在存储缓冲区中等待的所有先前存储,因此允许写入线程以全速运行。
Martin Thompson's article中对此进行了描述。