yarv-dev:411
From: Nobuyoshi Nakada <nobu.nokada softhome.net>
Date: Sun, 30 Jan 2005 10:28:57 +0900
Subject: [yarv-dev:411] Re: special local variables
なかだです。 At Tue, 25 Jan 2005 17:28:40 +0900, SASADA Koichi wrote: > def getproc > /abc/ =~ 'abc' > $pr = proc{ > p $~ > } > proc{ > /123/ =~ '123' > } > end > > pr1 = getproc > pr2 = proc{ > /123/ =~ '123' > p $~ > } > > > Thread.new{ > $pr.call > pr1.call > $pr.call > p $~ > pr2.call > p $~ > }.join > #=> > #<MatchData:0x2ac66b8> # 他スレッドで作成した $~ が見れる > #<MatchData:0x2ac6550> # 自スレッドで作成した $~ が見れる > nil > #<MatchData:0x2ac64c0> > nil # なんでだろー? # 自スレッドで作成した $~ が見れない どれもThread.mainで作成されたMatchDataです。Procが保持するコン テキストにはスレッドも含まれるので、pr2.callで作られた$~は元の スレッドとは異なる呼び出し元のスレッドからは見えない、というこ とです。 > 完全にスレッドローカルかつメソッド(クラス)ローカルな変数に > するのはどうでしょうか. ということで、一応はなっていると思いますが。 > また,現在の実装では並列にインタプリタを走らせられないよう > な気がします. これはまぁ、他の諸々の部分と同じく。 -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦 -- ML: yarv-dev quickml.atdot.net 使い方: http://www.atdot.net/~ko1/quickml
409 2005-01-25 17:28 [ko1 atdot.net ] special local variables 410 2005-01-25 17:42 ┣[matz ruby-lang.org ] -> 411 2005-01-30 10:28 ┗[nobu.nokada softhome] 426 2005-02-23 14:53 ┗[ko1 atdot.net ] 455 2005-03-09 09:25 ┗[matz ruby-lang.org ]