|
[ruby-list:42495] sleep等の不可解な問題発生(なぜでしょうか): msg#00149lang.ruby.japanese
いつもお世話になっております。 スクリプト中でsleep(2)を実行すると、無限に応答がない状態になります。 また、次ぎの実例3に示すような同様の不可解な現象が発生しました。 Rubyのバグとは思えませんが、理由を教えてください。 なお、Rubyは、Windows2000上でruby 1.8.2 (2004-11-06) [i386-mswin32]をRDE で使用しています。 1 使用の目的 ある時刻になったら、自動的にスクリプトを実行させるために、簡単な事例を用い て検討を始めました。 2 実例1 例えば、5秒間隔でprint命令を出すために、次ぎのスクリプトを実行すると、秒 が同一数値のために、 当然ながら、1200回以上も表示されます。そこで、1秒間待つために、sleep 1 を入れました。 ところが、sleep 0と同じ働きを示し、全く表示されません。 3 実例2 そこで、同じことですが、さらに簡単なスクリプトで試したのですが、同じ結果で す。 これでは、sleepの機能が正しく機能していないとしか言えませんが、どこに 間違いがあるのでしょうか。 PCを変更しても同様でした。 4 実例3 障害回避策として、実例3を試しました。この場合も表示されない状態でした。 そこで、 ts = time.secの前にpを入れると正しく表示され、初期の目的は達成さ れます。 p ts = time.sec # <= pを省略すると表示されなくなる。 pを書き込むことで異常は回避されるますが、直接にロジックとは無関係ですの で、何故このような不具合が発生するのかと嫌な気分です。 # 実例1 while (1) time=Time.now if time.sec%5==0 then printf("%d %d %d\n",time.hour, time.min, time.sec) sleep 1 end end # 実例2 t=0 while (1) sleep(2.2) t+=1 print t end # 実例3 ts=0 while (1) time=Time.now if time.sec%5==0 then if ts != time.sec then printf("%d %d %d\n",time.hour, time.min, time.sec) p ts = time.sec # <= pを省略すると表示されなくなる。 end end end 矢幡
|
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | [ruby-list:42494] Re: 多量の正規表現との効率的なマッチのアイデアを、、, rubikitch |
|---|---|
| Next by Date: | [ruby-list:42496] Re: sleep等の不可解な問題発生(なぜでしょうか), SAITO Shukaku |
| Previous by Thread: | [ruby-list:42492] [ANN] Lightweight Language Ring チケット発売開始, SASADA Koichi |
| Next by Thread: | [ruby-list:42496] Re: sleep等の不可解な問題発生(なぜでしょうか), SAITO Shukaku |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |