Tag: 内存 障碍

使用内存屏障强制按顺序执行

试着继续我的想法,使用软件和硬件内存障碍我可以禁用编译器优化编译的代码中的特定函数的无序优化,因此我可以使用像Peterson这样的算法实现软件信号量或者Deker不需要无序执行,我测试了以下代码,其中包含SW barrier asm volatile(“”: : :”memory”) __sync_synchronize asm volatile(“”: : :”memory”)和gcc builtin HW barrier __sync_synchronize : #include int main(int argc, char ** argv) { int x=0; asm volatile(“”: : :”memory”); __sync_synchronize(); x=1; asm volatile(“”: : :”memory”); __sync_synchronize(); x=2; asm volatile(“”: : :”memory”); __sync_synchronize(); x=3; printf(“%d”,x); return 0; } 但编译输出文件是: main: .LFB24: .cfi_startproc subq $8, %rsp […]