鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

编译器内存屏障

编译器会对生成的可执行代码做一定优化,造成乱序执行甚至省略(不执行)。

下面的指令可以解决编译阶段因为优化而会造成的内存访问乱序。

  • 在x86上的代码段:
    //GCC确保该指令执行前的读和写内存先与该指令后的读和写内存完成
    __asm__ __volatile__("" : : : "memory");
  • 在鲲鹏上替换后:
    __asm__ __volatile__ ("dmb ish" ::: "memory");