From: Yusuke ENDOH Date: 2010-08-17T00:22:25+09:00 Subject: [ruby-dev:42045] Re: [Bug #3674] dRuby サーバプロセスを停止する時に時間がかかることがある 遠藤です。 2010年8月17日0:00 Masatoshi SEKI : > Thread#joinって最後の値を取り出しますよね。たしか例外で終了した > 場合は例外が再びあがるんじゃなかったけ。 はい。 > begin > thread.kill.join > rescue なんとかえらー > end > > みたいにしたほうがよいものですか? kill_sub_thread の文脈を理解していないのですが、例外が上がる 可能性があるならそうしたほうがよさそうですね。 あと、join で死ぬのを待つなら while list.size > 0 は要らない かも。 diff --git a/lib/drb/drb.rb b/lib/drb/drb.rb index cacca14..cfed15c 100644 --- a/lib/drb/drb.rb +++ b/lib/drb/drb.rb @@ -1417,11 +1417,11 @@ module DRb grp = ThreadGroup.new grp.add(Thread.current) list = @grp.list - while list.size > 0 - list.each do |th| - th.kill if th.alive? + list.each do |th| + begin + th.kill.join if th.alive? + rescue Exception end - list = @grp.list end end end -- Yusuke Endoh