Я просто читаю С++ concurrency в книге действий Энтони Уильямса. Это классический пример с двумя потоками, один - с данными, другой - с данными и с A.W. написал этот код довольно ясно:
std::vector<int> data;
std::atomic<bool> data_ready(false);
void reader_thread()
{
while(!data_ready.load())
{
std::this_thread::sleep(std::milliseconds(1));
}
std::cout << "The answer=" << data[0] << "\n";
}
void writer_thread()
{
data.push_back(42);
data_ready = true;
}
И я действительно не понимаю, почему этот код отличается от того, где я бы использовал классический volatile bool вместо атомного. Если бы кто-то мог открыть мой разум по этому вопросу, я был бы благодарен. Спасибо.