やさしぃ〜プログラミング用語

2001/09/23 undo


デッドロック(deadlock)

お風呂に入るときに何を使いますか? 一家に1つしかないものだったら、別になんでもいいのだけど、、、そうですね、シャンプーなんてどうでしょうか? とりあえず、シャンプーということにしておきましょう(^_^)

前回のセマフォに出てきたトイレの話を覚えているだろうか? 今日は、お風呂とシャンプーのお話です(^^;;

お風呂の使い方は、トイレと同じく電灯を使うことにしています。こうすることによって、誰かがお風呂に入っているときにはお風呂の電灯がついていることになります。それで、シャンプーは洗面に置いてあることにしましょう。なぜ洗面かは深く考えないでください(_ _) まぁ、洗面で朝シャンするからということでどうでしょうか(^^;

それでは、本題に入ります。
鈴木家に娘が2人いるとしましょう。姉の名を京子、妹の名をまみといいます。名前ですが、どっかの女優さんやアイドル歌手とは、全く関係ありません(^^; 二人が風呂に入るとき、どっちが先かでいつもケンカになるんです。それで先を競うようにしてお風呂に入るのですが、京子がシャンプーを取りに行くと、まみが風呂場に行って電灯をつけます。そして、シャンプーの欲しいまみは風呂場に居座り、風呂に入りたい京子はシャンプーを渡さずに、どちらも譲らないので、ケンカになるわけです。困った姉妹です。


このように、どちらも譲らず、自分たちだけではどうにもできない状態を「デッドロック」といいます。このとき、「シャンプー」と「風呂場」を「資源(resource)」といいます。


鈴木家では、いつも最後は、母親がケンカに気づき「あんたはおねぇちゃんなんだから」となり、京子からシャンプーを取り上げるわけです。

上記の例では、母親がケンカを察知することで、デッドロックを検出、修復しましたが、いつもいつもケンカされたのでは、母親だってたまったもんじゃありません。おねぇちゃんだってかわいそうです(^^;
それで、鈴木家では、次のルールが出来ました。

風呂場の電灯をつけた人は、風呂もシャンプーも利用できる。
電灯をつけていない人は風呂もシャンプーも利用できない。

このルールのおかげで、姉妹はケンカすることがなくなりましたとさ。


戻る