logo       

[ruby-list:42496] Re: sleep等の不可解な問題発生(なぜでしょうか): msg#00150

lang.ruby.japanese

Subject: [ruby-list:42496] Re: sleep等の不可解な問題発生(なぜでしょうか)

斉藤秀格と申します。

At Tue, 27 Jun 2006 12:29:45 +0900,
Hisashi Yahata wrote:
>
> なお、Rubyは、Windows2000上でruby 1.8.2 (2004-11-06) [i386-mswin32]をRDE
> で使用しています。

RDEを介さず、コマンドプロンプトなどで実行しても結果は同じでしょうか?少
なくとも手元のWindows 2000の環境では、sleep 1が正常に機能しています。

> 2 実例1
>  例えば、5秒間隔でprint命令を出すために、次ぎのスクリプトを実行すると、秒
> が同一数値のために、
> 当然ながら、1200回以上も表示されます。そこで、1秒間待つために、sleep 1
>  を入れました。
>  ところが、sleep 0と同じ働きを示し、全く表示されません。

printfの出力がバッファに溜まっていて、実際の表示はバッファが一杯になるま
で遅延しているという状況ではありませんか?printfの直後に$stdout.flushな
どで強制的に表示させても駄目でしょうか?

> 4 実例3
>  障害回避策として、実例3を試しました。この場合も表示されない状態でした。
>  そこで、 ts = time.secの前にpを入れると正しく表示され、初期の目的は達成さ
> れます。
>  p ts = time.sec # <= pを省略すると表示されなくなる。
>  pを書き込むことで異常は回避されるますが、直接にロジックとは無関係ですの
> で、何故このような不具合が発生するのかと嫌な気分です。

pが出力後にバッファを一掃しているために、それに連られて本来の出力も画面
に現れているのではありませんか?

///// ------------------------------------------------------------------
-O-O- "Sai10 Sight" 斉藤 秀格 (SAITO Shukaku)
_ http://www.sai10.nu/
mailto:shukaku-1V31qp+v1yA@xxxxxxxxxxxxxxxx




<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise