黒田です。 >まつもと ゆきひろです > >たとえば,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 な別の問題なのでしょ うか? - -- 黒田 淳 (くろだ じゅん)