优化屏障与内存屏障 (barrier,rmb)


优化屏障(Optimization barrier)避免编译器的重排序优化操作,保证编译程序时在优化屏障之前的指令不会在优化屏障之后执行。

Linux用宏barrier实现优化屏障,gcc编译器的优化屏障宏定义列出如下(在include/linux/compiler-gcc.h中): 
#define barrier() __asm__ __volatile__("": : :"memory")


内存屏障

读写屏障像一堵墙,所有在设置读写屏障之前发起的内存访问,必须先于在设置屏障之后发起的内存访问之前完成,确保内存访问按程序的顺序完成。


内存屏障的宏定义功能说明

mb()适用于多处理器和单处理器的内存屏障。

rmb()适用于多处理器和单处理器的读内存屏障。

wmb()适用于多处理器和单处理器的写内存屏障。

smp_mb()适用于多处理器的内存屏障。

smp_rmb()适用于多处理器的读内存屏障。

smp_wmb()适用于多处理器的写内存屏障。


http://www.codelast.com/?p=1184

http://blog.chinaunix.net/uid-25845340-id-3011577.html



原文地址:https://www.cnblogs.com/mull/p/4477811.html