C++11 では、std::atomic<>
テンプレート ライブラリが導入されました。標準では、複数のスレッドで共有される変数をアトミックに設定/取得する操作が指定store()
されています。load()
私の質問は、割り当て操作とアクセス操作もアトミックですか?
つまり、次のとおりです。
std::atomic<bool> 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;
}