From: Tietew Date: 2003-11-05T12:23:20+09:00 Subject: [ruby-dev:21831] Re: load() blocks thread scheduling On Wed, 5 Nov 2003 00:56:59 +0900 In article <1067952985.116427.23346.nullmailer@picachu.netlab.jp> [[ruby-dev:21829] Re: load() blocks thread scheduling] matz@ruby-lang.org (Yukihiro Matsumoto) wrote: > |パース中はブロックしないと拙いというのは解るんですが,rb_eval に > |入ってからも拙い理由が解りません。そもそも Thread.start とか呼ぶ > |とスレッドの切り替えは起こってしまいますし。 > > loadは基本的にグローバルの状態を変更するので、きちんと保護し > ないとdead lockやrace conditionが発生します。が、ほとんどの > ライブラリはそんなことはしていません。となると、loadの段階で > serializeする方が親切だと思いました。明示的にThread.startと > かした場合には自己責任ということで。 うーむ… そもそもの要求仕様はこんな感じです。 ・外部スクリプトを実行したい(ライブラリのロードではなく,実行さ れるスクリプトとして) ・当然,スコープは分離しなくてはならない ・その際,スレッドを分けたい ・更に,無名モジュールで包んでグローバルな影響を抑えたい ・スタックトレースには実行した外部スクリプトのファイル名が載らな くてはならない。 何か妙案はないですか。 —[ 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