WinAPI Sleep 関数の難題: 予想よりも長いスランバー
パラメータ 1 を指定して WinAPI Sleep 関数を呼び出すと、ユーザーはスレッド遅延に遭遇する可能性があります予定された期間を超えた場合。実際、一連の 100 回の Sleep(1) 呼び出しの繰り返しにより、合計スリープ時間は 1500 ミリ秒となり、規定の 100 ミリ秒をはるかに上回りました。
スリープ延長の原因:
この動作は Windows スレッド スケジューラに固有のものです。これは、タイム クォンタム、つまりスレッドが実行できる定義された期間で動作します。ゼロ以外の遅延は本質的に最も近い完全な量子に切り上げられます。
考えられるシステムの問題:
観察された動作は典型的ですが、除外することが有利な場合があります。問題を悪化させる可能性のある潜在的なシステム問題:
追加の考慮事項:
他の実行中のプログラムがシステム全体のタイマー解像度を調整できるため、クォンタム サイズが小さくなる可能性があることは注目に値します。これは、Sleep(1) 遅延が意図した 1ms 時間枠内にあると報告される例を説明できます。 Windows 7 のデフォルトのタイマー解像度は、1 ミリ秒ではなく、約 15.6 ミリ秒である必要があります。
以上が## WinAPI の Sleep(1) が予想よりも長いスランバーを引き起こすのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。