Listen

Description

第42章へようこそ。

今日のテーマは「アトミック」です。

これまでの章で、共有した値を複数のスレッドから安全に書き換える手段として、ロックを見てきました。

MutexやRwLockは、ロックを取った流れだけに値への接触を許し、ほかの流れを待たせる。

ロックを取り、解放するという手順そのものにコストがかかる。

しかし、共有したい値が1つの数や1つの真偽の値のように単純なとき、ロックでひとくくりに囲むのは大げさです。

ロックを使わずに、その1つの値の更新だけを安全に行う手段がある。

それがアトミックです。

第37章と第39章で、参照カウントの操作が「原子的」であるかどうかを見ました。

今日は、その「原子的」を正面から扱います。

今日扱うのは、アトミックが何を保証するのか、メモリ順序という付随する指定、そしてアトミックで扱える範囲の限界です。