本文へスキップ
BecomeCoder
Wiki一覧コース一覧

デッドロック

最終更新: 2026年8月8日

デッドロック(deadlock)は、複数の処理が 互いに相手の持っている資源の解放を待ち続け、どちらも先へ進めなくなる 状態です。

たとえば会議室と資料を、2人がそれぞれ半分ずつ確保してしまった状況を考えます。

flowchart LR
  A["処理A:会議室を確保<br/>資料を待つ"] -->|資料が欲しい| B
  B["処理B:資料を確保<br/>会議室を待つ"] -->|会議室が欲しい| A

AはBの持つ資料を、BはAの持つ会議室を待っていて、どちらも譲らない——この膠着がデッドロックです。トランザクション が同時に走る データベース で起きやすい問題です。

対策には、いくつかの考え方があります。

多くのデータベースは自動でデッドロックを検出し、片方をロールバックして解消します。設計段階で「同時実行」を意識しておくことが、根本的な予防になります。

← Wiki一覧に戻る