黒田です。

 >まつもと ゆきひろです
 >
 >たとえば,busy waitを使わず
 >
 >  Thread.join a
 >
 >で待つようにしたりするとTRUE版とほぼ同じ動作になります.
 >
 >というわけで結論は「busy wait は他のスレッドの迷惑になるから
 >避けよう」ということになるのではないでしょうか?

わかりました。
 で、実は ML で紹介された timeout を(ちょっと手を入れて)使って
いて、ちゃんと timeout してくれないというのが発端だったのでした。

-毎度の http proxy--
def timeout(sec)
  is_timeout = FALSE 
  begin
    x = Thread.current
    y = Thread.start {
      sleep sec
      if x.alive?
	x.raise TimeOut, "timeout"
      end
    }
    begin
      yield
    rescue TimeOut
      is_timeout = TRUE
    end
  ensure
    Thread.kill y if y && y.alive?
  end
  is_timeout
end

is_timeout = timeout(TimeOut){
  body = http.read()
  cache.write(body)
}
- --

で、read か write を疑ったのですが TCPsocket な別の問題なのでしょ
うか?
- --
黒田  淳 (くろだ じゅん)