内存屏障,也叫内存栅栏,是一种 CPU 指令,用于控制特定条件下的重排序和内存可见性问题。
LoadLoad 屏障:对于这样的语句 Load1;Loadload;Load2,在 Load2 及后续读取操作要读取的数据被访问前,保证 Load1 要读取的数据被读取完毕。
StoreStore 屏障:对于这样的语句 Store1;StoreStore;Store2,在Store2及后续写入操作执行前,保证 Store1的写入操作对其它处理器可见。
LoadStore 屏障:对于这样的语句 Load1;LoadStore;Store2,在 Store2及后续写入操作被刷出前,保证 Load1 要读取的数据被读取完毕。
StoreLoad 屏障:对于这样的语句 Store1;StoreLoad;Load2,在 Load2 及后续所有读取操作执行前,保证 Store1 的写入对所有处理器可见。它的开销是四种屏障中最大的。
在大多数处理器的实现中,这个屏障是个万能屏障,兼具其它三种内存屏障的功能
Was this helpful?
0 / 0