3

ミリ秒の入力を取り、入力が経過時間の最小量であることのみを保証する Sleep() 以外に、c のウィンドウで使用できるより良いスリープ関数を誰かが知っているかどうか疑問に思っていました。私は 1 ミリ秒で通過していますが、実際には 15 ~ 16 ミリ秒の遅延が発生しています。指定されたスリープ時間を正確に設定する方法はありますか?

4

4 に答える 4

2

いいえ、そうではありません。プログラムにスリープを指示すると、プロセッサを放棄し、オペレーティング システムに次に何をするかを決定させます。オペレーティング システムが管理下に置かれると、プログラムに別の処理時間を与えるタイミングが決定されます。これが最小値を指定できる理由ですが、OS が特定の時点でプロセスに戻るという保証はありません。

于 2009-06-03T15:15:56.427 に答える
1

スリープは、プロセスが少なくとも nミリ秒間実行されないことを保証するだけであり、正確に nミリ秒間スリープすることを保証するものではありません。多分あなたはタイマーを設定したいですか?またはビジー待機 (つまり、ループで QueryPerformanceCounter をポーリング)。

必要がない限り、このアプローチ(ビジーウェイト)を避けようとしますが、サイクルを燃やしていて、CPUがより低いクロック速度になるのを止めています(つまり、バッテリー寿命を燃やしています)

于 2009-06-04T02:24:14.623 に答える
1

マルチメディア タイマーを調べます。

于 2009-06-03T15:12:41.893 に答える
0

いいえ、ミリ秒が利用可能な粒度のレベルであるため、Windows にはより優れたスリープ機能はありません。睡眠時間を短縮したい場合は、ある種のスピン ロックを実装する必要があります。

于 2009-06-03T15:14:21.530 に答える