关于volitail小知识:
为了保证可见性会触发缓存一致性:
伪共享问题:volitail 会触发缓存一致性[intel用的是MESI协议],缓存一致性每次都是按照行(一行一般是64个字节,超过则升级为总线锁)为单位触发的(缓存行的概念),行内可能有多个变量比如A,B 一旦A失效整个行的变量都将失效,(所以如果线程1只用了volitail A,线程2只用了volitail B 但是两个线程的缓存行却都是A和B[看起来就行两个线程共享了这俩变量],那就会触发不必要的缓存一致性同步)
为了避免伪共享,分割多个volitail变量,可以让一行内就一个volitail其他空间用别的变量占满,从而达到缓存行的对齐(牺牲空间换取速度)
disruptor中为了效率就是用了缓存行的对齐:为了让环形使用的效率达到极致
为了保证有序性触发CPU的内存屏障
实现有序的,从各种层面看: