排他制御
はいたせいぎょ
Exclusive Control
類語・同義語: ロック
排他制御とは、データベースやファイルなどの共有リソースに対して、複数の処理が同時に書き込みを行おうとした際に、データの整合性を保つために一方の処理を待機させる仕組みのことである。「ロック」をかけることで実現する。チケット予約サイトで、最後の1席を同時にボタンを押した2人が取れてしまわないようにするために必須の技術。
最終更新: 2026/1/16
概要
排他制御(Exclusive Control)は、デジタルの世界における「トイレの鍵」である。
なぜ必要なのか
トイレ(データ)に入っている人がいるのに、別の人が入ってきたら大惨事になる。 銀行口座の残高が1万円の場合を考える。
- Aさんが1万円引き出す(残高確認:1万円ある→OK)
- (この一瞬の隙に) Bさんが1万円引き出す(残高確認:まだ1万円ある→OK)
- Aさんの処理完了(残高0円)
- Bさんの処理完了(残高-1万円??)
排他制御がないと、このような矛盾(データの不整合)が起きる。
仕組み:ロック
Aさんが処理を始めた瞬間、データに「ロック(鍵)」をかける。Bさんがアクセスしようとしても「使用中」として待たされる。Aさんが終わって鍵を開けるまでは、誰も触れない。
副作用:デッドロック
Aさんが「リソース1」を持っていて「リソース2」を待っている。 Bさんが「リソース2」を持っていて「リソース1」を待っている。 お互いに「相手が開けてくれるまで待つ」状態になり、永久に動かなくなること。これがデッドロックである。
由来・語源
Exclusive(排他的な、独占的な)Control(制御)。他を排除して独占する制御。
使用例
「排他制御が正しく実装されておらず、データの不整合が発生した」「デッドロック(お互いがロック解除待ちで動けなくなる状態)を防ぐ設計が必要だ」
関連用語
- 同義語: ロック
- 関連: トランザクション, デッドロック, データベース, 矛盾, リソース