From: Hidetoshi NAGAI Date: 2007-07-23T12:54:43+09:00 Subject: [ruby-dev:31276] Re: is_ruby_native_thread() 永井@知能.九工大です. From: SASADA Koichi Subject: [ruby-dev:31275] Re: is_ruby_native_thread() Date: Mon, 23 Jul 2007 11:20:40 +0900 Message-ID: <46A4107A.6030207@atdot.net> >  (1) に有効な方法が思いつかないので、(2) しか無いんじゃないか > なぁ。 > >  グローバル変数に linked list か hash へのポインタを加えてあ > げて、アクセスは必ず排他制御する感じのものが。 > >  性能に影響が出るほど利用頻度は高いですか? 一つは,外部ライブラリがその内部ルーチンで native thread を 生成する可能性があるケースです. ruby への call が一切無いことが保証されるならいいのですが, そうでない場合には毎回のチェックを必要とする可能性があります. ある固定スレッドに必ず ruby 呼び出し処理を依頼するという方法も もちろんありますが,効率を考えると,直接呼べる限りは直接呼びたいと 考えるのが人情ですよね. ただ,「毎度のスレッド切り替えに比べれば軽いから (2) でいいじゃん」 って主張もありそうですね. もう一つは,割り込み処理です. 割り込み処理を ruby で登録している場合, 割り込みを受け付けた native thread が ruby を呼べるかどうかを チェックする必要がありますよね? 割り込み処理は少しでも早くに完了させるべきですので, チェックもわずかでも早いに越したことはないはずです. # 現在の 1.9 の signal.c では問題なしということであればごめんなさい. >  あと、is_* という名前はあれなので、出来れば rb_ がついたナイ > スな名前になるといいなぁ、とは思います。互換性の点から難しいかな。 これは変更しちゃってもいいと思います. is_ruby_native_thread() でのチェックを必要とするようなライブラリは, 1.9 対応のためには,多分,それなりの量の書き直しを必要とするでしょうから. -- 永井 秀利 (九工大 知能情報) nagai@ai.kyutech.ac.jp