回答編
デッドロックはデータベースやプログラミングの用語ね。二つ以上のプロセスが同時にリソースアクセスしようとする際に起こる問題……って、ちょっと桜坂どうしたのよ。げっそりとやつれちゃって。
三十分も放置されれば誰だってこうなりますよ……。僕、律儀に待ってたんですからね、室見さんが指パッチンしてくれるの。
ふふふ。
なぜ不敵な笑い!?
私がなんの考えもなくあんたを理不尽に立たせていたと思って? デッドロックによって起こるシステムのフリーズを実際に味わってもらっていたのよ!
な、なんですってぇぇえええ!?
はい白板に注目。同一データベース上にAとB二つのデータがあるとします。プロセス1はA→Bの順で操作、プロセス2はB→Aの順で内容を編集します。ここで両プロセスは同時にデータベースアクセスを開始しました。さて、何が起こるでしょう?
何って……プロセス1がAを編集しますよね。プロセス2がBを編集……で、お互いの作業が終わったら今度は逆に1がBをいじって2がAをいじる……何かおかしいですか?
AとBの処理が独立してたらそれもありだけど、二つが連続していたら? たとえばAの口座データから残高を減らしてBの口座データに振り込むような場合。ちなみにプロセス2はその逆をやろうとしている。
うーん……プロセス1はデータAにアクセスしたままBも処理しようとしますよね。でもBはプロセス2が処理中で……あ。
そう、アクセス拒否されるわよね。だからプロセス1はプロセス2がデータBの編集を終えるまで待機状態になる。でもプロセス2は逆にプロセス1がAの編集を終えるのを待っている。両すくみ状態でしょ? これがデッドロック、システムフリーズの原因ね。
どうすればいいんでしょう?
シンプルに考えるなら待機状態の制限時間を決める。もしくはフリーズしている処理を強制失敗させて以前の状態に戻すことね。まぁそもそもデッドロックが起こるようなプロセスは作らないってのが基本だけど。不測の事態はどこでも起こりえるしね。
なるほど……勉強になります。……って、あれ? デッドロックは同一リソースに二つ以上の処理がアクセスして固まっちゃうことなんですよね?
そうだけど。
さっき僕が放置されてたのって単純に室見さんというプロセスがリソース桜坂を開放し忘れてただけですよね? 両すくみって話じゃないですよ。デッドロックの定義とは違いません?
(ぎくっ)
なんかぎくって音が聞こえたんですけど。
やーねー、そんなことあるわけないじゃない。
あは、あははははは(笑いながら遠ざかっていく)
あ、逃げた! やっぱり後付けの理由だったか。もお! 今日という今日は勘弁なりません。このパワハラ上司、一回思い知らせてやらないと!
(互いに中二ポーズを取り合いながら追撃戦。奇妙な眼差しで見つめる他テナントの社員達。フェイドアウト)
【解説】
デッドロック:
データベース・プログラミング用語。複数のプロセスが同一リソースにアクセスしようとして両すくみ状態になること。所謂「排他制御」の副作用。対策としてはタイムアウト値の設定やデッドロック状態のプロセスを監視し強制終了させる、などがある。
この連載の記事
-
最終回
トピックス
IT業界の夢とロマンが詰まった、最終回なIT用語! -
第43回
トピックス
業界人は軍事用語好き? やっぱり中二病なんですかね、なIT用語 -
第42回
トピックス
サッカー漫画で何を思い浮かべるかで世代が分かるIT用語 -
第41回
トピックス
いくぜっ、バーストモード! 動作クロック30倍! なIT用語 -
第40回
トピックス
前世の記憶は信じなくても、過去のミスは忘れない室見さん、なIT用語 -
第39回
トピックス
もう一人の自分を解き放て! 対比で分かる中二病的IT用語 -
第38回
トピックス
生命を刈り取る「不死の軍団」みたいなIT用語 -
第37回
トピックス
MK2、透明で発展系のMK2……なIT用語 -
第36回
トピックス
お金がかかるをキーワードにいろいろな話題が広がったIT用語 -
第35回
トピックス
理化学とミリタリーへの憧れが中二病につながるかもしれないIT用語 -
第34回
トピックス
超兵器とリンク、しているようで実はただ乗りしてるだけのようなIT用語 - この連載の一覧へ