第42章へようこそ。
今日のテーマは「アトミック」です。
これまでの章で、共有した値を複数のスレッドから安全に書き換える手段として、ロックを見てきました。
MutexやRwLockは、ロックを取った流れだけに値への接触を許し、ほかの流れを待たせる。
ロックを取り、解放するという手順そのものにコストがかかる。
しかし、共有したい値が1つの数や1つの真偽の値のように単純なとき、ロックでひとくくりに囲むのは大げさです。
ロックを使わずに、その1つの値の更新だけを安全に行う手段がある。
それがアトミックです。
第37章と第39章で、参照カウントの操作が「原子的」であるかどうかを見ました。
今日は、その「原子的」を正面から扱います。
今日扱うのは、アトミックが何を保証するのか、メモリ順序という付随する指定、そしてアトミックで扱える範囲の限界です。