首页 文章

将布尔值设置为true时是否需要原子CAS

提问于
浏览
1

我有一个同时访问bool的类 . 但是在我的情况下,它只在构造函数中初始化为false,然后设置为false . 我是否正确地相信即使比赛可能会发生,结果也会有效并定义?由于整个bool不必写入以便“!isStopping_”评估为true .

class MyClass
{
public:
   MyClass() : isStopping_(false), thread_([=]{Run();}) {}

   void Stop()
   {
      isStopping_ = true;
   }

private:

   void Run()
   {
       while(!isStopping_) // data race
       {
            // Work
       }
   } 

   bool isStopping_ ;
   boost::thread thread_;
};

1 回答

相关问题