鉴于CPU具有动态调度无关联指令的能力,为何保证多线程的安全,如何禁止cpu的这种动态调度?


鉴于CPU具有动态调度无关联指令的能力,为何保证多线程的安全,如何禁止cpu的这种动态调度?

操作系统 多线程

sid1204 11 years, 11 months ago

barrier指令可以阻止CPU对该指令前后的指令进行乱序执行 ,使用方法如下代码所示:

   
  #define barrier() __asm__ volatile ("lwsync")
  
volatile T* pInst = 0;
T *GetInstance()
{
if( !pInst )
{
lock();
if( !pInst )
{
T* tmp = new T;
barrier();
pInst = tmp;
}
unlock();
}

return pInst;
}

春原阳平_ answered 11 years, 11 months ago

Your Answer