デッドロック
でっどろっく
デッドロック(Deadlock)とは、2つの処理が互いに相手の処理終了を待ち続けてしまい、どちらも先に進めなくなってフリーズする状態。「すくみ」とも呼ばれる。排他制御の不備で起こることが多く、データベースやマルチスレッドプログラミングにおける代表的なバグの一つ。
最終更新: 2026/1/18
すくみ状態
2つの処理が、互いに相手の持っている資源(データなど)が空くのを待ち続けてしまい、どちらも永遠に先に進めなくなる状態。「膠着状態」。
- 例: Aさんが「電話」を持っていて「ペン」を待っている。Bさんが「ペン」を持っていて「電話」を待っている。お互いに譲らないため、一生仕事が終わらない。 これを防ぐためには、資源を確保する順番を決めたり、一定時間で諦める(タイムアウト)仕組みが必要。
由来・語源
「Dead(死んだ)」+「Lock(錠)」。交差点でお互いの車が道を塞ぎ合って動けなくなる状態に似ている。
使用例
「データベースの排他制御ミスにより、デッドロックが発生した」「交渉はデッドロック(膠着状態)に乗り上げ、解決の糸口が見えない」
関連用語
- 同義語:
- 関連: 排他制御, 競合状態, スタック, バグ, データベース