clock()の“49日目”問題
■ このスレッドは過去ログ倉庫に格納されています
0001minima
NGNG1/1000秒単位)を返す関数ですが,49日間ほどマシンを連続して運用していると
clock()が 0 に戻ってしまうという話がありました。
それなりの対応をしていないアプリケーションは,49日以上連続で運用すると
問題が起きるかも〜とかね。
ってことで今 VC++5.0 の time.h を見てたんですが,clock_t は
unsigned long 型じゃなくてただの(っていうか signed の)long 型なんですね。
これでは25日もしないうちに clock() はマイナスの値を返すように
なっちゃわないでしょうか。
0002minima
NGNGって感じで unsigned にキャストして,25日問題はクリアですか。
っていうか,普通は25日間も連続で使いませんよねー。
もうsageようかな。
0003>1
NGNG常に new-old;old=new; を実行すればいいと思いますが?
1時間以上差をとらないようなシステムなら time()を使えばいいのでは?
0004名無しさん@お腹いっぱい。
NGNGバカ?
0005>4
NGNGで、1さんはclockの他にtimeも使える事に注目して下さい。
timeが60*60*24秒 以上ならtimeを使えば普通問題無いでしょう
どうせパソコンの時計の精度は1日1秒程度しかありません。
00065
NGNGそれと1さんは、49日を過ぎるとclockが正常に使えなくなるような気がしていませんか?
ラップアラウンドするので、普通に差を取ればその差が
符号付で24日以内@`符号無しで49日以内なら問題ありません。
単純にclockの帰り値と同じ型で差を取るという事がコツかもしれません。
0007名無しさん@お腹いっぱい。
NGNG乱数の種くらいにしかつかわないでしょ?
通信制御とかにも使うのかな?
0008>7
NGNG■ このスレッドは過去ログ倉庫に格納されています