けいじゅ@SHLジャパンです. In [ruby-list :01272 ] the message: "[ruby-list:1272] Re: thread and $1 ", on Dec/12 16:09(JST) matz / caelum.co.jp (Yukihiro Matsumoto) writes: >以下のものはグローバル変数のようにみえますが,実はローカル変 >数です(マニュアルにも書いてあります). > > $_ $~ $& $` $' $+ $1 $2 ... > >以下のものはスレッドローカル変数です. > > $@ $! > >ですから,心配ないです.ちなみに現状ではユーザレベルでスレッ >ドローカル変数を定義できません.ごめんね. ん? そうすると以下のプログラムの動作は, おかしくないのですか?? ----ここから--- $stdout.sync = 1 $, = ", " $\ = "\n" th1 = Thread.new { old = nil loop do "aa" =~ /(.)/ Thread.pass if old != $1 old = $1 print $1 end end } th2 = Thread.new { loop do "bb" =~ /(.)/ Thread.pass end } th1.run th2.run old = nil "zz" =~ /(.)/ sleep 10000 ---ここまで 実行結果は: a b a b : となります. こういう動作は困り物だと思うのですが?? もう1つ: sleep 1000 の変わりに Thread.exit するとコアダンプします. __ ..........................................石塚 圭樹@SHLジャパン(株)... ------------->アドレス変わりました!! e-mail: keiju / shljapan.co.jp <----