优化屏障和内存屏障

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

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

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

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

 

内存屏障在不同的体系结构上的实现不同,复杂程度也不尽相同,上述函数是linux中的实现,具体得体系结构实现不详细展开,看源码即可

posted @ 2016-11-08 21:00  一天能写一篇就好啦  阅读(260)  评论(0)    收藏  举报