优化屏障和内存屏障

优化屏障:该原语保证编译程序不会混淆元语操作前后的汇编语言指令。优化屏障即barrier(),翻译成汇编就是asm volatile("":::"memory")。memory关键字强制编译器假定RAM中的所有内存单元已经被汇编语言指令修改,volatile关键字进制把asm指令与程序中的其他指令重组

内存屏障:在原语之后的操作开始之前,原语之前的操作已经完成

串行指令,同事起到内存屏障的作用:

  1. I/O端口进行操作的所有指令
  2. lock前缀的所有指令
  3. 写控制寄存器、系统寄存器或者调试寄存器的所有指令
  4. 一些特殊指令,如奔腾4的lfence等指令
  5. 少数的专门汇编语言指令

猜你喜欢

转载自www.linuxidc.com/Linux/2016-11/136947.htm