デッドロック
読み:デッドロック
外語:dead lock
二つ以上のプロセスが互いに占有している資源にアクセスを試みてしまい、それぞれ相手側の要求が完了しないために資源の解放もできず永久に待ち状態になってしまうこと。英語の原義では「行き詰まり」。
概要
例えばファイルAとファイルBを排他的に用いるとする。
プロセス甲がファイルAをロックしてファイルBのロック解放を待つ、プロセス乙がファイルBをロックしてファイルAのロック解放を待つ、という状況になると、半永久的にそれ以上処理が進まなくなってしまう。これがデッドロックである。
特徴
身近な例では、CGIの掲示板プログラムがある。
二人が同時に書き込むとファイルが壊れてしまうので、書き込みは一人ずつ処理するよう、書き込むファイルにロックをかけることが多い。
しかしもしある人の書き込み処理でエラーが起き、そのプログラムがロックを解除せずに不正終了してしまうと、次の人が掲示板に書き込もうとしても前の書き込みが終了していないように見えるので、いつになっても書き込めずエラーになってしまう。これもデッドロックの一例である。実際にはこうならないようにプログラムを書かないといけないわけである。
再検索