优化屏障:该原语保证编译程序不会混淆元语操作前后的汇编语言指令。优化屏障即barrier(),翻译成汇编就是asm volatile("":::"memory")。memory关键字强制编译器假定RAM中的所有内存单元已经被汇编语言指令修改,volatile关键字进制把asm指令与程序中的其他指令重组
内存屏障:在原语之后的操作开始之前,原语之前的操作已经完成
串行指令,同事起到内存屏障的作用:
I/O端口进行操作的所有指令
lock前缀的所有指令
写控制寄存器、系统寄存器或者调试寄存器的所有指令
一些特殊指令,如奔腾4的lfence等指令
少数的专门汇编语言指令