我正在阅读一个遗留 C++ 代码,其中内存屏障定义如下。主要操作系统是 linux 和 vxworks。编译器是 gcc(WindRiver 的 gcc)。
#if((KCompilerGNU)||(kCompilerWindRiver))
#define MEMORY_BARRIER __asm__ volatile("nop\n");
#else
#define MEMORY_BARRIER __asm nop;
#endif
但是我看不到无操作操作如何产生内存屏障?或者这只是一个错误的实现?