本記事は教養記事シリーズその35です。その他の教養記事はコチラの目次をご覧ください。
★この記事の流れ★
ロックとは?
デッドロックとは?
スポンサーリンク
スレッド
マルチスレッドにおいて、複数のスレッドが互いのスレッドを排他してしまいプログラムが停止すること。
[JavaA2Eより]
スレッドってなに…?
プログラミングを実行するときの単位の1つをスレッドと呼びます。2ちゃんねるの「スレ」という言葉を聞いたことがある人がいるかもしれませんが,まさにスレッドの略語で「話題の単位」を表しています。
つまり,デッドロックというのは,あるプログラムの実行単位ともう一方の実行単位が影響し合ってプログラムが進まなくなってしまうことを指します。
ロック
影響って具体的にとんなこと?
影響を与える,というのは具体的には「ロックする」という操作に当たります。ロックというのは,プログラムであるスレッドの処理を開始しようとしたときに,変更されてはいけない資源(変数やデータなど)を変更されないようにアクセスを禁止することです。ロックには読み書きを禁止する「占有ロック」と,読み出しのみを許可する「共有ロック」の2種類があります。
デッドロックとは,2つのスレッドがお互いに異なる資源を占有ロックし合った状態のことを指しています。
ひとこと
デッドロックという言葉は「手詰まり」を意味する外来語としても利用されることがあります。回避方法としては,なるべく使われやすいセットで資源を管理するようにすることや,資源へのアクセス順番を定めておくことなどが挙げられます。