コンテンツへスキップ
uencoder

Deadlock

デッドロックとは、複数のスレッドが互いに保持するロックを待ち合い、永久にブロックされた状態になることである。

目的

デッドロックが発生する条件とその防御策を理解する。並行プログラムの信頼性における中心的な関心事である。

メカニズム

コーフマンの 4 条件:相互排他、保持と待機、非横取り、循環待ち。すべて同時に成立するとデッドロックが起きる。防御策:ロックの順序付け(グローバルな順序)、タイムアウト、try-lock、ネストしたロックの回避。

ユースケース

  • 並行処理プログラムの信頼性
  • ロック設計
  • デッドロック検出

関連ツール

References