[#41778] [Bug #3515] FreeBSD wrongly raises ECONNRESET on close(2) — Yui NARUSE <redmine@...>

Bug #3515: FreeBSD wrongly raises ECONNRESET on close(2)

12 messages 2010/07/02

[ruby-dev:41904] Re: thread.bind(sym, val) { ... }

From: "NAKAMURA, Hiroshi" <nakahiro@...>
Date: 2010-07-30 09:12:24 UTC
List: ruby-dev #41904
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) {}
とか。

In This Thread

Prev Next