#define ngx_memory_barrier() __asm__ volatile ("" ::: "memory")
什么情况下有用?
内存屏蔽(Memory Barrier),这里有篇文章介绍这个操作的必要性。
Memory Barrier
而__asm__ volatile ("" ::: "memory")是GCC Inline Assembly,只有gcc才能明白,因而只对gcc这个编译器起作用,对CPU是无效的。
__asm__ volatile ("" ::: "memory")
gcc
CPU
更新
关键字volatile:
volatile
volatile int64_t cnt_writerec; /* tesing counter for record write times */
表明某个变量的值可能在外部被改变,
因此对这些变量的存取不能缓存到寄存器,
每次使用时需要重新存取。
该关键字在多线程环境下经常使用。
参考:
详解C中volatile关键字
标签
查看
314 次