2010/7/30 Tanaka Akira <akr / fsij.org>:
>> 多いんですか。個人的にはスレッド変数はスレッドスコープのグロー
>> バル変数としてだけ使い、スコープのあるような使い方の経験はな
>> いんですが。
>
> うぅむ、調べ直してみると、たしかにそんなに多くないのかもしれません。

一応、そういう使い方の例を。
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/lib/soap/mapping/mapping.rb?view=markup
の、下のほうにあるprotect_threadvarsが定義で、上のほうに利用例がありま
す。obj2soap、soap2obj共に再帰するので、スコープを作ります。

> pp (や inspect) では、スレッド変数それ自体は一回設定したら変えませんね。
> 変更・回復は設定したハッシュの中身に対して行うので、

Threadインスタンスが使い捨てのことが多く、グローバル変数的に使っても気に
ならない、ということはあるかもしれません。再帰せず、名前衝突が無ければ意
味ないし。

> それは Thread#bind で
> 対応するものではなさそうです。

Hash的なものへの代入でスコープのような使い方、と汎用化すればよい?
let(Thread.current, :sym => var) {}
とか。