From: "U.Nakamura" Date: 2005-10-20T21:23:17+09:00 Subject: [ruby-dev:27469] Re: 1.8.4 relrase plan? こんにちは、なかむら(う)です。 In message "[ruby-dev:27468] Re: 1.8.4 relrase plan?" on Oct.20,2005 21:02:43, wrote: | >native win32な関係者の皆さんにお伺いしたいんですけど、1.9から | >rb_w32_select(とそれに付随するもの)をbackportしてもいいでしょ | >うか? | >やるならpreview1の出る前しかないと思うので。 | | うーん、まだ時期尚早なんじゃないかという気がします。現在の HEAD の | ものをそのまま持ってきて何度も testrb drb をしてると、固まることが | あります。私のいじった最後のリビジョンだと固まらないようですが、 | それすら自信がありません。 drbで固まるということは、ソケット絡みですかね。ううむ... 不安材料があるならやめといた方がいいと思うので、今回は見送り ましょうか。 | どうも do_select の中の catch_interrupt があると高確率で固まるよう | ですが、そもそも RUBY_CRITICAL がシングルスレッドの ruby でなぜ必要なのか | とか、catch_interrupt が何をしているのかとかまったくわかってないので・・・ Windowsコンソールアプリケーションに対してCtrl+Cなどのシグナル が投げられると、Windowsは新規にスレッドを立て、そのスレッドか らシグナルハンドラを呼び出します。 よって、シグナル生成後はシングルスレッドではなくなります。 # シグナルハンドラをメインスレッドで実行するための涙ぐましい # 努力がrb_w32_main_context()あたりにあります。 シグナルが生成されるとinterrupted_eventイベントがsignal状態に なり(ややこしいな)、catch_interrupt()はそれを回収する役目を持 ちます。 それでは。 -- U.Nakamura