[#954] Rational — keiju@... (Keiju ISHITSUKA)

けいじゅ@SHLジャパンです.

23 messages 1996/10/30
[#955] Re: Rational — matz@... (Yukihiro Matsumoto) 1996/10/30

まつもと ゆきひろです.

[#968] Re: Rational 1996/10/31

けいじゅ@SHLジャパンです.

[ruby-list:771] Re: mech. of Thread (Re: httpd.rb)

From: matz@... (Yukihiro Matsumoto)
Date: 1996-10-07 07:05:46 UTC
List: ruby-list #771
In message "[ruby-list:770] mech. of Thread (Re: httpd.rb)"
    on 96/10/07, Shin-ichiro Hara <sinara@blade.nagaokaut.ac.jp> writes:
|
|原です。

|ある閾値を超えるとトータルのパフォーマンスが急に落ちたりす
|ることはないのでしょうか。あるけどそんなに小さい値ではない
|のかな。

threadのコンテキストスイッチのコストは一定ですから(厳密には
ちょっと違うんですけど),threadの数に比例してトータルのパフォー
マンスは落ちるでしょうね.多分急激に落ちることは無いと思いま
すよ.あまりヘビーなテストを行っていないので,限界がどこにあ
るのかはしりません.

|質問なんですが、ruby では X というプログラムから a, b の2つ
|の Thead を start させた場合、内部的にはどういう順番で実行さ
|れるのですか?

|X a b X a b X a b ...

rubyのthreadはプライオリティの無いラウンドロビンですから,こ
れが一番近いと思います.

|また、その Thread の切り替えのタイミングは実行時間によるもの
|なのですか?

thread切替えはsetitimerのあるOSではそれを使って約50msec毎に
行っています.そうでないOSではインタプリタが500ステップ実行
する毎に切替えています.

|もう一つ質問。ある Thread が Thread.kill された場合、終了する
|直前に(その Thread の中で)一定の処理をさせたいのですが、そ
|の様なコードは書けるでしょうか?

killされた時だけですか? それはちょっと難しいなあ.
threadが終了する時いつでもということでしたら,Thread.startで
指定するブロックでensureすればよいでしょう.つまり

  Thread.start do
    begin
      # threadの中身
    ensure
      # 終了前にさせたい仕事
    end
  end

です.

|それから、現在 start している(終了していない)Thread の配列
|を返すメソッドがあるとうれしいです。サービス過剰?

ObjectSpaceでThreadのオブジェクトを得るというのはどうでしょ
うか? ちょっと無理があるかな.まあちゃんと変数なり配列なりに
保存しておいた方が良いと思いますよ.

|#ときどき質問メールより先に松本さんの回答が返ってくることが
|#あるけど、ruby に入っているウィルスが、文章を書いているは
|#しから松本さんに漏洩しているのかしら。:-)

新潟方面から電波が聞こえるんです. ^^;;

実際は松本が返事を書くのが速すぎて配送途中でフォローが追い越
してしまうことがあるようです.

                                まつもと ゆきひろ /:|)

In This Thread

Prev Next