缓存行 伪共享
当我们要把内存里的数据放进CPU的时候
内存不会只把一个数据放进CPU 而是会将该数据附近?的数据 一批读到CPU
这一批数据叫cache line CPU读取单位为 缓存行 大部分缓存行为64字节

那么这里会产生一个问题
如果x 和 y 在同一个缓存行里 内存64字节
假如cpu1 只需要x 但是x和y会被同时读进cpu1缓存中
cpu2 只需要y 但是x和y也会同时被镀金cpu2的缓存中
如果CPU1修改了x 但是会通知其他cpu “我整个缓存行都改过了” 已经是Invalid
那么CPU2就会重新把缓存行读取一遍 然后再修改y
如果循环下去 问题就会放大
产生互相影响的伪共享问题
缓存行对其可以提升效率

这里的cursor 无论是和前面p7 对齐还是个后面p8对齐 能保证他们位于同一缓存行 不和其他数据放在同一缓存行中

这里我们将 x 强制变成缓存行 要么属于p1-p7那一行缓存行 要么属于p9-p15那一缓存行 那么 是要位于同一缓存行 效率会变快




浙公网安备 33010602011771号