デッドロック
どっちも身動きが取れなくなっている状況だよ
お互い、相手の処理が終わるのを待ってるよ
簡単に書くよ
デッドロック(英:deadlock)とは
お互いが相手の作業が終わるのを待っていて、どっちも身動きが取れなくなっている状況のこと
です。
詳しく書くよ
「デッド」な「ロック」で「デッドロック」です。
デッドは「なんかヤバいことになってるんだなー」とか、そんなイメージね。
ロックは「これは今、俺が使っているからさ。他の人は触らないでね」のことです。
以上を踏まえて
ロックが原因でヤバいことになっている
のが「デッドロック」です。
例えば、そうですね。
ピヨ太君とピヨ子さんが、とあるマンガ喫茶に来ているとしましょう。
ピヨ太君は全2巻で完結のマンガ『ぴよぴよファンタジー』を読みたかったのですが、1巻しか棚に置いてありませんでした。
「どーせだったら一気に読みたいなぁ」と考えたピヨ太君は、とりあえず1巻を手に取りつつ2巻が棚に戻るのを待ちました。
時はさかのぼって、5分前のことです。
ピヨ子さんは全2巻で完結のマンガ『ぴよぴよファンタジー』を読みたかったのですが、2巻しか棚に置いてありませんでした。
「どーせだったら一気に読みたいなぁ」と考えたピヨ子さんは、とりあえず2巻を手に取りつつ1巻が棚に戻るのを待……とうと思ったのですが、喉が渇いたのでドリンクバーを取りに行きました。
あぁ、なんということでしょう。
ピヨ子さんがドリンクバーを取りに行っている間に、1巻が棚に戻され、それをピヨ太君が手にしてしまったのです。
ここで問題です。
ピヨ太君、もしくはピヨ子さんが『ぴよぴよファンタジー』を読めるのは、いつになるでしょうか?
そうですね。
答えは「どちらも、いつまで経っても読めない」です。
ピヨ太君は1巻を確保しつつ2巻が棚に戻るのを待っています。
ピヨ子さんは2巻を確保しつつ1巻が棚に戻るのを待っています。
どちらも、自分が確保している巻が原因で相手の動きを止めてしまっています。
このような現象を「デッドロック」と言います。
実際のデータの話で言えば、ファイル1のデータとファイル2のデータを同時に更新する必要があった場合(2つともロックする必要があった場合)で、ピヨ太プログラムがファイル1をロック、ピヨ子プログラムがファイル2をロックしてしまった場合などに起きます。
自分が動けないのが原因で相手が動けません。
でも自分が動けないのは相手が動けないのが原因です。
でも相手が動けないのは自分が原因です。
でも自分が動けないのは……のように延々と続く状態ですね。
ちなみに今回は登場人物が2人で話しましたが、3人以上の人物が登場して発生するデッドロックもあります。
もし遭遇したら存分に涙目になってください。
一言でまとめるよ
まぁ「デッドロック」って単語が出てきたら「お互いに相手が終わるのを待っていて身動き取れなくなっている状態なんだな~」と お考えください。
おまけ
■訳してみるよ
「dead(デッド)」の意味は「死んだ」とか「死んでいる」とかです。
「lock(ロック)」の意味は「錠前」とか「錠をかける」とか「閉じ込める」とか「固定する」とか「動けなくする」とかです。
何となく くっつけると
死んでいる固定
となります。






