我的代码很简单,如下所示。我发现可以读写rmb和wmb,但是找不到通用的。lwsync在PowerPC上可用,但是x86的替代品是什么?谢谢。
#define barrier() __asm__ volatile ("lwsync")
...
lock()
if(!pInst);
{
T* temp=new T;
barrier();
pInst=temp;
}
unlock();
最佳答案
rmb()
和wmb()是Linux内核函数。还有mb()
。
x86指令为IIRC lfence
,sfence
和mfence
。