アトミック操作
一つの単位として完了する操作。全体が実行されるか、まったく実行されないかのどちらかである。並行システムで、ロックなしにデータ競合を避けるうえで欠かせない。
CPUの対応は、LOCK XADD(x86)、LDXR/STXR(ARM)、cmpxchg(compare-and-swap)など。言語側では、C++のstd::atomic、JavaのAtomicInteger、RustのAtomicUsize、Goのsync/atomicがある。メモリオーダリングには、逐次一貫(既定で最もコストが高い)、acquire/release、relaxedがある。ロックフリーのデータ構造(キュー、スタック)はCASループの上に作られる。ウェイトフリーはさらに厳しく、各スレッドが有限のステップ内で必ず進捗する。正しく書くのは悪名高いほど難しい。