老师,您好。Disruptor中,有一段防止伪共享的代码我没看明白。
https://github.com/LMAX-Exchange/disruptor/issues/158
就像上面提问的那样,为什么数组前后填充128字节?而不是64字节?
(代码:this.entries = new Object[sequencer.getBufferSize() + 2 * BUFFER_PAD],其中BUFFER_PAD占用128字节)
在其他issue 中,作者还针对数组的伪共享回复过:
"It's used to pad the elements in the array away from the length parameter of the array. So that when the write to one of the array elements occurs it won't share a cache line with the length"。
这个我也没太懂,数组的length参数是什么?内存里有这个属性?数组的指针不就是直接指向数组的第一个元素吗?