我正在寻找以下代码段的更好实现,以最大限度地减少 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)
使用原子变量,因为这将比成熟的互斥锁更快,并且可能是无锁的。例如,std::atomic<int>
或者std::atomic_flag取决于你在做什么。
但是,根据您在代码中的具体操作,您可能希望使用条件变量std::condition_variable来避免旋转。