こんにちは、高石です。

From: Koji Arai <JCA02266 / nifty.ne.jp>
Subject: [ruby-list:36063] Re: Windows で Thread

> 知っている方教えてください。
> 
> [ruby-list:24637] の前の [ruby-list:24630] は、Rubyの落とし
> 穴に載っているのですが、どうも編集過程で情報が欠落しているよ
> うです。
> 
> http://www.ruby-lang.org/ja/man-1.6/?cmd=view;name=trap%3A%3Atimeout
> 
> もともとの [ruby-list:24630] では、
> 
> > * 時間待ちの処理
> > 
> > require 'timeout'
> > 
> > begin
> >   timeout(5) do
> >     $stdin.gets
> >   end
> > rescue TimeoutError
> >   print "timeout\n"
> > end
> > 
> > 以下の例ではうまく機能しませんでした。
> > ( ruby 1.6.0 cygwin1.1.2)
> > require 'timeout'
> > 
> > i = 0
> > begin
> >   timeout(5) do
> >     while true
> > 	p (i+=1)
> >     end
> >   end
> > rescue TimeoutError
> >   print "timeout\n"
> > end
> 
> っと、二種類示されているのですが、落とし穴に載っているのは前
> 者のみです。しかも、「Cygwin と MinGW でダメ」っと落とし穴に
> 書いているのですが、実際はどうなのでしょうか?

実験してみました。

(A) $stdin.gets
(B) p (i+=1)
(C) puts (i+=1)

(A) (B) (C)
 O   O   X  ruby 1.6.7 (2002-03-01) [i686-cygwin]
 O   O   X  ruby 1.7.2 (2002-08-24) [i386-cygwin]
 X   O   O  ruby 1.6.7 (2002-03-01) [i586-mswin32]
 X   O   O  ruby 1.7.3 (2002-10-02) [i686-bccwin32]

※10秒以上待っても終了しなかったものを X としました。
/--------------------------------------------------------/
  高石 勇人 < rio-t / presen.to >
  PGP Key(RSA): http://rio-t.presen.to/pgp/mykey.asc
         (DSS): http://rio-t.presen.to/pgp/mykey-dss.asc
/--------------------------------------------------------/