Read-modify-write とは

コンピュータサイエンスでは、リードモディファイライトは、メモリロケーションを読み込んで新しい値を書き込む、アトミックオペレーションのクラスです(テストセット、フェッチアンドアド、コンペアアンドスワップなど)同時に、全く新しい値または以前の値の何らかの関数を使用しています。これらの操作は、マルチスレッドアプリケーションの競合状態を防ぎます。通常は、mutexやsemaphoreの実装に使用されます。これらのアトミック操作は、ノンブロッキング同期でも頻繁に使用されます。
Maurice Herlihy(1991)は、以下のように、コンセンサスナンバーでアトミックオペレーションをランク付けしている。
 ∞:メモリからメモリへの移動とスワップ、拡張キュー、コンペア・アンド・スワップ、フェッチ・アンド・コン・スティッキ・バイト、ロードリンク/ストア・コンディション(LL / SC)2n-2: :テスト・アンド・セット、スワップ、フェッチ・アンド・アド、キュー、スタック1:アトミック・リードおよびアトミック・ライト
このような操作のどれがどれだけ使用されても、コンセンサス番号が低い操作だけでコンセンサス番号を必要とする操作を実装することは不可能です。リード・モディファイ・ライト命令は、I / Oデバイスで使用すると予期しない結果を生じることがあります。これは、リード操作でアクセスされるのと同じ内部レジスタにライト操作が影響しないためです。
この用語は、アトミックリードモディファイライトシーケンスとして実際のライトオペレーションを実行するRAIDレベルにも関連しています。このようなRAIDレベルには、RAID 4、RAID 5、およびRAID 6が含まれます。