フェッチ・アンド・アッド
フェッチ・アンド・アッド(Fetch-and-Add)は、アトミックに指定されたメモリ位置の内容を更新する特別なCPU命令。マルチプロセッサシステムでのミューテックスや並列処理アルゴリズムを実装するのに使われる。
シングルプロセッサシステムでは、クリティカルセクションの前に割り込み不可とするだけで十分である。しかし、マルチプロセッサシステムでは全プロセッサの割り込みを不可とするだけでは不十分で、複数のプロセッサが同時に同じメモリ位置にアクセスするのを防ぐことはできない。フェッチ・アンド・アッド命令はプロセッサがアトミックに指定されたメモリ位置の値をインクリメントするもので、複数プロセッサによる衝突を防ぐ。
Maurice Herlihy (1993年)は、フェッチ・アンド・アッドがコンペア・アンド・スワップよりも劣っていることを証明した。
CPUによっては単純なインクリメントだけでなく、任意の値の加算および減算も可能である。この場合、フェッチ・アンド・アッドのみを用いてマルチプロセッサセーフな参照カウントを実装することができる。