- トラフィックのデッドロック :複数の車両が交差点で立ち往生し、お互いの進路を妨げて動けなくなった場合に発生します。
- リソース割り当てのデッドロック :これは、複数のプロセスが続行するために相互にリソースを解放するのを待っている場合に発生します。たとえば、データベース システムでは、2 つのトランザクションがそれぞれ異なるレコードのロックを保持しており、どちらも他のトランザクションがロックを解放して処理を続行できるのを待っている場合があります。
- 哲学者の晩餐 :これはデッドロックの概念を説明する古典的な思考実験です。円形のテーブルに 5 人の哲学者が座っており、テーブルの中央にはスパゲッティのボウルが置かれています。スパゲッティを食べるのに各哲学者は 2 本の箸を必要としますが、利用できる箸は 5 本しかありません。哲学者が一方の箸を手に取ると、別の哲学者が放すまでもう一方の箸を手に取ることはできません。 5 人の哲学者全員が 1 本の箸を手に取ると、全員が行き詰まり、スパゲッティを食べることができなくなります。
- ネットワークのデッドロック :これは、2 つ以上のネットワーク デバイスが互いのデータ送信を待機しているために通信できない場合に発生します。たとえば、2 つのルーターを備えたネットワークでは、各ルーターは、自分のデータを送信する前に、他のルーターがデータのパケットを送信するのを待っている可能性があります。両方のルーターがお互いを待機している場合、デッドロックが発生し、データを送信できなくなります。
- ソフトウェア エンジニアリングの行き詰まり :これは、複数の実行スレッドが互いにタスクの完了を待機しており、どのスレッドも処理を進めることができない場合に発生します。これは、たとえば 2 つのスレッドが同時に同じリソースにアクセスしようとしていて、両方のスレッドが続行する前にもう一方のスレッドがリソースを解放するのを待つ必要がある場合に発生する可能性があります。