
WindowsのAPIについての質問です。
timeGetTimeの精度を上げるため、timeBeginPeriodを呼ぼうと思っています。ですが、timeBeginPeriodを呼んだが、timeEndPeriodを呼ばなかったり強制終了等で呼べなかったりした場合はどうなってしまうのでしょうか。
timeBeginPeriodはOS全体に影響するとのことなので、timeBeginPeriodを呼んだプログラムが終了すれば精度も元に戻るのであれば安心なのですが、ずっと残るとなると気になります。
そうだとすると、今作ろうとしているプログラムは、コンソールアプリケーションでタイマーで定期的に負荷をかけ続けるもので、Ctrl-Cで終了させることを前提にしているため、timeEndPeriodを呼ぶタイミングがなく困っています。
No.2ベストアンサー
- 回答日時:
以下のプログラムを動かして実験してみました。
XP SP3 , Intel Core 2 Duo E6850 (3.0GHz)
// <A>
int main()
{
timeBeginPeriod(1);
}
// <B>
int main() {
for (int i=0; i<10; i++) {
printf("%d\n", timeGetTime());
Sleep(1);
}
}
1) <B>を単独で実行したとき
→約15msおきの数値が表示されました。
2) <A>を実行した後<B>を実行したとき
→約15msおきの数値が表示されました。
3) Windows Media Playerを起動しておいて<B>を実行したとき
→約4msおきの数値が表示されました。
以上からtimeEndPeriodを呼ばすにプログラムを終了してもタイマー精度はリセットされるようです。
そうでしたか!
ということは、Ctrl-Cで終了時にtimeEndPeriodを呼ぶようにしなくても、精度はクリアされそうですね。
実験までしていただいてありがとうございました。
これで理解が進みました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Macターミナルで実行中のプログ...
-
powershell を使いカレントディ...
-
構文エラーについて教えてください
-
独立した複数のプログラムを統...
-
C言語で途中までしか、プログラ...
-
パソコンの演算速度について
-
RPG パラメーターについて
-
実行時にVBのモジュールファイ...
-
アクセス[ファイルを開かずに、...
-
popen関数について
-
”行数のカウント”はどうすれば...
-
アポトーシスのexeファイル...
-
TCP/IP通信時のサーバーからの受信
-
Windows上で、シグナル(SIGTERM...
-
プロセスIDの取得方法について
-
Excel(VBA)でSetTimer関数を使...
-
C# シリアル通信でデータ受信...
-
win10で、正確な待ち時間の作り方
-
VBSの処理中一旦処理を止めて再...
-
VBA、UserFormを前面に出力して...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Macターミナルで実行中のプログ...
-
powershell を使いカレントディ...
-
パソコンの演算速度について
-
RPG パラメーターについて
-
sendkeysにてALT+CTRL+INSERTを...
-
VBAで外部プログラムを非表示で...
-
C言語で途中までしか、プログラ...
-
並列計算をしたときのシステム...
-
VB上で実行中の無限ループの止め方
-
MACで動く実行ファイルをWindow...
-
vba GetAsyncKeyState関数について
-
C言語でフォルダを開く
-
システム資源とは?
-
アクセス[ファイルを開かずに、...
-
他の実行ファイルを実行するプ...
-
ExcelのVBAでX=0〜1の定積分を...
-
実行時エラー429
-
clock関数は正確じゃないの?
-
sleep()関数について
-
プログラムの再起動
おすすめ情報