什么是内存屏障

Posted 奇妙之二进制

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是内存屏障相关的知识,希望对你有一定的参考价值。

内存屏障,也称内存栅栏,内存栅障,屏障指令等, 是一类同步屏障指令,是CPU或编译器在对内存随机访问的操作中的一个同步点,使得此点之前的所有读写操作都执行后才可以开始执行此点之后的操作。

大多数现代计算机为了提高性能而采取乱序执行,这使得内存屏障成为必须。

语义上,内存屏障之前的所有写操作都要写入内存;内存屏障之后的读操作都可以获得同步屏障之前的写操作的结果。因此,对于敏感的程序块,写操作之后、读操作之前可以插入内存屏障。

大多数处理器提供了内存屏障指令:

  • 完全内存屏障(full memory barrier)保障了早于屏障的内存读写操作的结果提交到内存之后,再执行晚于屏障的读写操作。
  • 内存读屏障(read memory barrier)仅确保了内存读操作;
  • 内存写屏障(write memory barrier)仅保证了内存写操作。

内核代码里定义了这三种内存屏障,
如x86平台:arch/x86/include/asm/barrier.h

#define mb()    
开发者涨薪指南 48位大咖的思考法则、工作方式、逻辑体系

以上是关于什么是内存屏障的主要内容,如果未能解决你的问题,请参考以下文章

内存屏障

内存屏障

(转载)java内存模型

什么是内存模型的happens-before

如何在没有内存屏障的情况下实现 InterlockedIncrement

内存屏障