我的代码很简单,如下所示。我发现可以读写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 lfencesfencemfence

10-04 14:48