From: matz@... (Yukihiro Matsumoto) Date: 2001-09-08T04:07:20+09:00 Subject: [ruby-dev:14745] Re: [BUG] $_ on thread switching まつもと ゆきひろです In message "[ruby-dev:14743] [BUG] $_ on thread switching" on 01/09/07, nobu.nakada@nifty.ne.jp writes: | 関数の中からThread#runを使うと、そのスレッドとスコープを共有 |する親スレッドの$_, $~が、子スレッドのもので上書きされてしまい |ます。でも逆や、直接runしたときは起きません。1.4,1.6,1.7全て同 |様です。 分かりました。main_threadが関数の中にいる(のでruby_scopeや lastlineもその関数の内部を指している)ときに別スレッドが main_threadの上のスコープでコンテキストスイッチを行ってしま うと、上のスコープではmain_threadの書き戻しが行われないため に、書き換わってしまいます。 これを解決するいい方法はちょっと思いつきません。そもそもスコー プローカルかつスレッドローカルってのに無理があったか。 まつもと ゆきひろ /:|)