У меня есть класс, где bool - это доступ одновременно. Однако в моем случае он только один раз инициализируется как false в конструкторе, и после этого он устанавливается в false. Правильно ли я полагать, что, хотя гонка может произойти, результат будет действительным и определенным? Так как весь bool не должен быть записан в inorder для "! 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_;
};