[#41918] [Feature #3647] Array#sample(n, replace=false) — Kenta Murata <redmine@...>

Feature #3647: Array#sample(n, replace=false)

11 messages 2010/08/03

[#41966] [Bug #3673] PTY.getpty with IO.pipe doesn't finish on FreeBSD — Yui NARUSE <redmine@...>

Bug #3673: PTY.getpty with IO.pipe doesn't finish on FreeBSD

9 messages 2010/08/10

[#41969] [Feature #3675] String#prepend, String#>> — Sora Harakami <redmine@...>

Feature #3675: String#prepend, String#>>

15 messages 2010/08/10
[#41976] Re: [Feature #3675] String#prepend, String#>> — Yukihiro Matsumoto <matz@...> 2010/08/10

まつもと ゆきひろです

[#41974] Re: [ruby-cvs:36157] Ruby:r28955 (trunk): * complex.c (nucomp_to_[ifr]): don't allow complex with in-exact — Yukihiro Matsumoto <matz@...>

まつもと ゆきひろです

7 messages 2010/08/10

[#42003] WEBrickに関するセキュリティ修正 (CVE-2010-0541) — Hideki Yamane <henrich@...>

12 messages 2010/08/11

[#42090] Math::atan2(0, 0) on ruby 1.9.2 — KUBO Takehiro <kubo@...>

久保です。

18 messages 2010/08/22
[#42092] Re: Math::atan2(0, 0) on ruby 1.9.2 — Kenta Murata <muraken@...> 2010/08/22

=1B$B$`$i$?$G$9!#=1B(B

[#42166] Ruby'sライセンスの、BSDLとのデュアルライセンスへの変更 — "NARUSE, Yui" <naruse@...>

Ruby's ライセンスは BSDL と Ruby's のデュアルライセンスになります。

14 messages 2010/08/31

[ruby-dev:42040] [Bug #3674] dRuby サーバプロセスを停止する時に時間がかかることがある

From: Tomoyuki Chikanaga <redmine@...>
Date: 2010-08-16 00:46:18 UTC
List: ruby-dev #42040
チケット #3674 が更新されました。 (by Tomoyuki Chikanaga)


[ruby-dev:42035] の咳さんの返信にフォローします。

> えっと、Rubyのスレッドかなにか問題の報告と考えてよいのでしょうか?
>
> ここにThread.passが必要な理由がわかりません。
> 私がなにかしたほうがよいのでしょうか?

なにを指摘しているのかあいまいな報告ですみませんでした。

Thread#kill のソース(rb_thread_kill)をみると、特に明示的なスレッドの切り替えを
発生させるようなところがなかったため、
DRbServer#kill_sub_thread の以下の while ループはタイマーで強制的に切り替えが発生するまで
ぐるぐる回り続けるのではないかと考えました。

list = @grp.list
while list.size > 0
  list.each do |th|
    th.kill if th.alive?
  end
  list = @grp.list
end

先刻 irb でちょっと実験してみましたが kill で停止した Thread は
実際に終了するまで(?) ThreadGroup に残っているようです。
>> tg = ThreadGroup.new
=> #<ThreadGroup:0x8e7cc20>
>> thr = Thread.new{ tg.add Thread.current; sleep }
=> #<Thread:0x8e96008 sleep>
>> thr.kill; p tg.list
[#<Thread:0x8e96008 aborting>]
=> [#<Thread:0x8e96008 aborting>]
>> tg.list
=> []

ということで Thread#kill で停止させた Thread が本当に停止して ThreadGroup から消えるには
明示的なスレッド切り替えが必要なのではないか(充分とは限りませんが)と考えた結果が先のパッチです。
しかし Thread#kill または ThreadGroup の挙動が意図したものでないという可能性もあります。
これはよくわかりません。どうなのでしょうか?
個人的には Thread#kill するたびに切り替えするのは重そうなので現状のほうがいいような気がします。
----------------------------------------
http://redmine.ruby-lang.org/issues/show/3674

----------------------------------------
http://redmine.ruby-lang.org

In This Thread

Prev Next