まつもと ゆきひろです

In message "[ruby-list:9271] Re: thread overhead"
    on 98/08/26, "D.Kanda" <MAP2303 / mapletown.net> writes:

|  かんだです。

|>   * Threadの生成のためのコストは通常のオブジェクトを生成する
|>     コストと大差ない(はず).Rubyでは大量にオブジェクトを生成
|>     するので,このコストが気になる人はRubyを使えないだろう.
|
|  Thread生成の時にはスタックのコピーはされないんですか?
|  現在のスタックへの参照をコピーするだけかな?

スタックのコピーが発生するのはコンテキスト切り替えのタイミン
グです.生成された時点ではありません.もっとも生成すればすぐ
にコンテキスト切り替えは発生するでしょうから,さほど重要な違
いでもないですけどね.

|>   * 生きているスレッドがたくさんあってもコンテキスト切り替え
|>     のコストはそれほど変わらない.スラッシングも起きない.
|
|  すいません、スラッシングって何ですか?

複数のスレッドが資源を奪いあってコンテキスト切り替えのコスト
に埋没してしまい,本来の仕事が出来なくなることです.たとえば,
UNIX系のOSではforkを大量に行うとスラッシングが発生して,OSが
反応しなくなります.Rubyのthreadは切り替えが間に合わなければ
遠慮なく遅れを出しますから,スラッシングは起きません.

|  オーバーヘッドはあんまり気にしなくていいみたいですね。時々によって見やす
|い方を使うことにします。

そうですね.ただし,繰り返しますが,threadのオーバーヘッド
が気にならないのはthreadの効率がよいからではなくて,逆に他の
部分がそれほど速くないから目立たないせいであることを忘れない
で下さい.
                                まつもと ゆきひろ /:|)