From: Tietew Date: 2002-08-22T12:10:57+09:00 Subject: [ruby-dev:18064] Re: [Bug] rb_thread_create sometimes returns 0 On Thu, 22 Aug 2002 00:08:32 +0900 matz@ruby-lang.org (Yukihiro Matsumoto) wrote: > |流れ的には正しくなりましたが,Thread#join で fatal が再発生しま > |せんでした。 > > fatalは捕捉されることを想定してないんで、再発生するシチュエー > ションってのはどうなんでしょうね。fatalが発生しちゃうと > > * 全スレッドがTHREAD_TO_KILLになり、後始末モードになる > * main_threadも終了しちゃう > * で、プロセス終了 > > んで、Thread#joinを正当に呼べる状況はあってはいけないんじゃ > ないかと。 うむむ。fatal って単に Ruby が補足できない例外というだけじゃない んですね ^^;; でも,[ruby-dev:18058] で示したスクリプトで,Thread#join から何 食わぬ顔で帰って来るのはどうかと思いますが… ----- mth = Thread.current Thread.new do Thread.critical = true mth.join end.join がうまく動くのは何故だ〜って思ったら rb_raise(rb_eFatal, ...) し てたんですね。あ,でも rescue できないのか。 —[ Tietew ]—————————————————————————— メ : tietew@tietew.net / tietew@raug.net / tietew@masuclub.net ホペ: http://www.tietew.net/ Tietew Windows Lab. http://www.masuclub.net/ 鱒倶楽部 指紋: 26CB 71BB B595 09C4 0153 81C4 773C 963A D51B 8CAA