From: sheepman Date: 2007-06-23T23:34:54+09:00 Subject: [ruby-dev:31039] deadlock detection when main thread calls Thread.stop こんばんは、sheepman です。 細かい話ですが。結果的にメインスレッドだけが Thread.stop している状態に なった時に、deadlock の例外が発生しないのはそういうものなのでしょうか。 メインスレッド以外に Thread.stop しているスレッドがもうひとつあった場合は、 deadlock の例外が発生します。 何か検出するデッドロックの基準みたいなものはあるのでしょうか。あればリファレンスに 書き足しておきます。 $ cat dlck2.rb Thread.new do sleep 1 end sleep 0.1 Thread.stop $ ruby-1.8 -v dlck2.rb ruby 1.8.6 (2007-06-18 patchlevel 5000) [i686-linux] (デッドロック発生) $ cat dlck3.rb Thread.new do sleep 1 p 3 end Thread.new do sleep 0.1 p 1 Thread.stop end sleep 0.5 p 2 Thread.stop $ ruby-1.8 -v dlck3.rb ruby 1.8.6 (2007-06-18 patchlevel 5000) [i686-linux] 1 2 3 deadlock 0x4022e6fc: sleep:- (main) - dlck3.rb:14 deadlock 0x40221830: sleep:- - dlck3.rb:9 dlck3.rb:1: Thread(0x40221894): deadlock (fatal) -- sheepman / TAMURA Takashi sheepman@sheepman.sakura.ne.jp