リード・コピー・アップデート
この名称はRCUがリンクリストをその場で更新するのに使われていたことに由来する。 この場合、以下のような処理の流れとなる。
新しい構造体を作成する。
データを古い構造体からコピーし、古いデータ構造へのポインタをセーブする。
新しいデータ構造に更新(変更)を加える。
グローバルなポインタが新しいデータ構造の方を指すよう変更する。
カーネルが古いデータ構造の参照者がいないと判断するまでスリープする(Linuxなら synchronize_rcu() を使用する)。
更新を行ったスレッドがカーネルによって起こされたら、安全に古いデータ構造を解放できる。
そのため、参照 (read) スレッドは、更新 (update) スレッドがコピー (copy) している間も並行して動作できる。以上から、「リード・コピー・アップデート(read-copy update)」と呼ばれたのである。これを RCU という略称で呼ぶようになったのはLinuxコミュニティである。類似の技術は、例えばVM/XA(英語版)では passive serialization あるいは MP defer と呼ばれ、K42(英語版)やTornadoでは generations と呼ばれている。
2008年初めごろの段階で、Linuxカーネル内では、ネットワーク・プロトコルスタックやメモリ管理システムなど約2,000箇所で RCU API を利用している。 2006年以降、研究者らはRCUや類似の技法をいくつかの問題に適用してきた。例えば、動的解析に使用するメタデータの管理、クラスター型オブジェクトのライフタイム管理、K42研究OSでのオブジェクト管理、ソフトウェアトランザクショナルメモリ実装の最適化などである。DragonFly BSD はRCUによく似た技法を採用しており、Linuxの SRCU 実装に極めて近い。