硬件内存屏障
sfence:save | 在sfence指令前的写操作当必须在sfence指令后的写操作前完成
Ifence:load | 在Ifence指令前的读操作当必须在Ifence指令后的读操作前完成。
mfence:modify/mix | 在mfence指令前的读写操作必须在mfence指令后的读写操作前完成。
原子指令,如x86上的“lock …”指令是一个Full Barrier,执行时会锁住内存子系统来确保执行顺序,甚至跨多个CPU。Software Locks通常使用了内存屏障或原子指令来实现变量可见性和保持程序顺序