デッドロックの例 ダウンロード | スレッド

N個の木槌とノミをN*2人の大工が共有して作業をする. 基本的には哲学者の問題と同じだが,ちょいとはリアリティがある.

ソースをダウンロード [ZIP], [DIR]
実行ファイルをダウンロード [JAR]

デットロック

問題点

src/Carpenter.java のrun()メソッドを見ればわかるが, ハンマーがとれなきゃ,ノミをとって, 再度,ハンマーがとれるのを待つというロジックになっているため, それぞれが,ハンマーもしくはノミ1本をとった状態で膠着してしまう.

解決法

たとえば,まずノミがとれるまで,ハンマーはとらずに待つなどの 戦略にすれば,デッドロックは起こらない.