一、X86 CPU内存屏障
sfence:在sfence指令前的写操作当必须在sfence指令后的写操作前完成lfence: 在Ifence指令前的读操作当必须在Ifence指令后的读操作前完成mfence: 在mfence指令前的读写操作当必须在mfence指令后的读写操作前完成。
二、JSR内存屏障
LoadLoad屏障:对于这样的语句Load1; LoadLoad; Load2,在Load2及后续读取操作要读取的数据被访问前,保证Loadi要读取的数据被读取完毕。
StoreStore屏障:对于这样的语句Store1; StoreStore; Store2,在Store2及后续写入操作执行前,保证Store1的写入操作对其它处理器可见。
LoadStore屏障:对于这样的语句Load1; LoadStore; Store2,在store2及后续写入操作被刷出前,保证Loadi要读取的数据被读取完毕。
StoreLoad屏障:对于这样的语句Store1; StoreLoad; Load2,在Load2及后续所有读取操作执行前,保证Store1的写入对所有处理器可见。