From: nagachika Date: 2010-08-18T09:03:52+09:00 Subject: [ruby-dev:42056] Re: [Bug #3674] dRuby サーバプロセスを停止する時に時間がかかることがある 近永です。 ありがとうございます。 この差分でしばらく試してみます。 2010年8月18日4:13 Masatoshi SEKI : > 咳といいます。 > > On 2010/08/16, at 9:46, Tomoyuki Chikanaga wrote: > >> チケット #3674 が更新されました。 (by Tomoyuki Chikanaga) >> >> >> [ruby-dev:42035] の咳さんの返信にフォローします。 >> >>> えっと、Rubyのスレッドかなにか問題の報告と考えてよいのでしょうか? >>> >>> ここにThread.passが必要な理由がわかりません。 >>> 私がなにかしたほうがよいのでしょうか? >> >> なにを指摘しているのかあいまいな報告ですみませんでした。 >> >> Thread#kill のソース(rb_thread_kill)をみると、特に明示的なスレッドの切り替えを >> 発生させるようなところがなかったため、 >> DRbServer#kill_sub_thread の以下の while ループはタイマーで強制的に切り替えが発生するまで >> ぐるぐる回り続けるのではないかと考えました。 > > > 遠藤さんの指摘をもとにこんな風に変更したらどうかと思いました。 > もしよかったら、試していただけませんか? > > > Index: drb.rb > =================================================================== > --- drb.rb (revision 29026) > +++ drb.rb (working copy) > @@ -1419,7 +1419,10 @@ > list = @grp.list > while list.size > 0 > list.each do |th| > - th.kill if th.alive? > + begin > + th.kill.join if th.alive? > + rescue Exception > + end > end > list = @grp.list > end > > >