From: matz@... (Yukihiro Matsumoto) Date: 1996-12-17T15:05:09+09:00 Subject: [ruby-list:1299] Re: thread and $1 まつもと ゆきひろです. In message "[ruby-list:1298] Re: thread and $1" on 96/12/17, Keiju ISHITSUKA writes: | |けいじゅ@SHLジャパンです. |と思ったのですが, ローカル変数はthread間では共有されていないと思うので |すが?? どうなんでしたっけ?? 通常のローカル変数はスコープ内であればthread間で共有されます. 動的ローカル変数は共有されない場合があります. 例えば def foo var1 = nil lambda { var2 = nil Thread.start do # thread1 var3 = nil ... end Thread.start do # thread2 var3 = nil ... end }.call end var1……通常のローカル変数.fooの全体で有効,var1の値を変え ると全threadで値が変わる var2……動的ローカル変数.lambdaの範囲内で有効.全threadで共 有される var3……動的ローカル変数.thread1,thread2で別の値を持つ となります.つまり,threadを開始したブロック内で宣言された動 的ローカル変数だけが共有されないんですね.もちろんそれぞれの threadから呼び出されたメソッドのローカル変数は違う値を持ちま す(当り前). まつもと ゆきひろ /:|)