Issue #15954 has been updated by sawa (Tsuyoshi Sawada).


matz (Yukihiro Matsumoto) wrote:
> ライブラリでスレッドを作ったりしている可能性もあるので「自分以外全部join」はマズいんじゃないかなあと思います。
> Since required libraries may create threads inside, joining other threads altogether could cause problems.
> What do you think?
> 
> Matz.

確かにそうでした。現在のファイルで作られたスレッドなどの制限を付ければいいのかな。良さそうな考えが浮かんだらまた出直します。

----------------------------------------
Feature #15954: 簡単にマルチスレッドを一度に合流させる
https://bugs.ruby-lang.org/issues/15954#change-78812

* Author: sawa (Tsuyoshi Sawada)
* Status: Rejected
* Priority: Normal
* Assignee: 
* Target version: 
----------------------------------------
現在いるスレッド以外の全てのスレッドを現在のスレッドに合流させたいときは多いと思います。

その場合、一つの方法は、スレッドを生成するときにそれらを配列に蓄えておき、あとでその配列の各要素のスレッドに対して`join`をすることですが、そのためにわざわざスレッドを配列に蓄えておかなければならないのは、若干手間で無駄かなと思います。

それを回避する方法として、私の思いつく限りで単純な方法は次のようなものです。

```ruby
Thread.list.each{|t| t.join unless t == Thread.current}
```

しかし、ここでは現在のスレッドを合流の対象から除く条件式を入れる必要があるためにエレガントでありません。そこで、`Thread.list`から現在のスレッドを除いた配列を返すメソッドを希望します。これは`Dir.entries`だと不要なピリオドファイルが含まれる不便さから`Dir.children`が作られたのと同じ発想です。

あるいは、一歩進めて、`Thread.join_other_threads`のような感じで現在のスレッド以外の全てのスレッドを一気に合流させるメソッドがあってもよいと思います。



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>