Должен ли я явно вызывать атомную загрузку / хранение?
C ++ 11 представилstd::atomic
библиотека шаблонов. Стандарт определяетstore()
а такжеload()
операции для атомарной установки / получения переменной, совместно используемой несколькими потоками.
Мой вопрос - это операции присваивания и доступа тоже атомарные?
А именно, это:
std::atomic stop(false);
...
void thread_1_run_until_stopped()
{
if(!stop.load())
/* do stuff */
}
void thread_2_set_stop()
{
stop.store(true);
}
Эквивалентно:
void thread_1_run_until_stopped()
{
if(!stop)
/* do stuff */
}
void thread_2_set_stop()
{
stop = true;
}