在 C++ 中通过多个线程监视具有读写访问权限的共享变量

sa_*_*uin 1 c++ c++14

我正在寻找以下代码段的更好实现,以最大限度地减少 CPU 使用率。我有一个对多个线程具有读/写访问权限的变量,需要按如下方式进行监视。

while(true){
     mutex.lock();
     int flag = external_flag;
     mutex.unlock();
     if(flag == 3){
          break;
     }else if (flag == 4){   
          go to label;
     }
}
Run Code Online (Sandbox Code Playgroud)

Aco*_*orn 5

使用原子变量,因为这将比成熟的互斥锁更快,并且可能是无锁的。例如,std::atomic<int> 或者std::atomic_flag取决于你在做什么。

但是,根据您在代码中的具体操作,您可能希望使用条件变量std::condition_variable来避免旋转。

  • @user4581301:不,这是你可以[用R](/sf/answers/1108356721/)做的事情。 (2认同)