top page > computer > programming > algorithm > lock > deadlock.html
更新日:
文責: 重城良国

デッドロック

デッドロックとは

複数のプロセスが互いに他のプロセスの実行に必要な資源をロックしあうことで、処理が進まなくなること。

プロセスA, Bと資源S, Tがあるとする。プロセスAはまず資源Sをロックし次に資源Tをロックする。プロセスBはまず資源Tをロックし次に資源Sをロックする。どちらのプロセスも全体の処理が終了した段階でロックを解除する。ここで以下のような場合を考えてみよう。

  1. プロセスAが資源Sをロックする
  2. プロセスBが資源Tをロックする
  3. プロセスAが資源Tをロックしようとする
  4. 資源TはすでにプロセスBがロックしている
  5. プロセスAは待ちに入る
  6. プロセスBが資源Sをロックしようとする
  7. 資源SはすでにプロセスAがロックしている
  8. プロセスBは待ちに入る

このような状態をデッドロックと呼ぶ。互いに相手が処理を進めるのに必要な資源をロックしあっている。

解決策

デッドロックしないように注意する以外の方法は(多分)ない。

正当なCSSです! HTML5 Powered with CSS3 / styling, and Semantics