Windowsのcのスリープ機能。もっと精度の高い関数は存在するのでしょうか?
質問
私は、ミリ秒の入力を受け取り、その入力が最小の経過時間であることのみを保証する Sleep() 以外に、C 言語の Windows で使用できるより優れたスリープ関数を知っている人がいるかどうか疑問に思っていました。1 ミリ秒で通過していますが、実際には 15 ~ 16 ミリ秒の遅延が発生します。指定された睡眠時間を正確に設定する方法はありますか?
解決
いや、そうでもありません。あなたが眠るためにあなたのプログラムを言うときは、プロセッサを放棄し、オペレーティングシステムが次の何をすべきかを決定させることです。オペレーティングシステムが制御していると、それはあなたのプログラムに処理時間の別のスライスを与える際に決定しました。あなたが最小を指定することができる理由はここにありますが、OSが任意の特定の時間に戻ってあなたのプロセスを取得するという保証はありません。
他のヒント
マルチメディアタイマーを調べてください。
スリープは、プロセスが次の期間実行されないことを保証するだけです。 少なくとも n ミリ秒、スリープするわけではありません その通り n ミリ秒。タイマーを設定したいですか?または、ビジー待機 (すなわち、ループ内で QueryPerformanceCounter をポーリングします)。
私はこのアプローチ (ビジー待機) を避けようとします。 ただし、サイクルを消費し、CPU のクロック速度の低下を防ぐ必要がある場合を除きます (つまり、消耗バッテリー寿命)
(ミリ秒)が可能な粒度のレベルであるため、
いいえ、Windows上でより良い睡眠の機能はありません。あなたは短い時間のためにスリープ状態にしたい場合は、種類のスピンロックを実装する必要があります。
所属していません StackOverflow