Windows での Sleep() 関数の動作
Sleep() 関数を呼び出すと、通常、スレッドは指定された期間実行を一時停止します。ただし、場合によっては、スレッドが長時間スリープしているように見える場合があります。
Windows 7 などの Windows バージョンでは、Sleep() はタイム クォンタムで動作します。これは、ゼロ以外の遅延が最も近い量子に切り上げられることを意味し、その結果、スリープ期間がわずかに長くなる可能性があります。
この動作の一般的な症状は、Sleep(1) の呼び出しによって実際にエラーが発生する可能性があることです。約15ミリ秒のスリープ。これは、オペレーティング システムのスケジューラが通常 15.6 ミリ秒のクォンタムを使用するためです。
これを説明するために、次のコード スニペットが提供されています。
<code class="cpp">#include <iostream> #include <ctime> #include <Windows.h> void test(void) { std::cout << "Testing 1ms sleep." << std::endl; for (unsigned int i = 0; i < 10; i++) { std::clock_t startClocks = std::clock(); Sleep(1); std::clock_t clocksTaken = std::clock() - startClocks; std::cout << "Time: " << clocksTaken << "ms." << std::endl; } }</code>
このコードは Windows 7 で実行される可能性があります。スリープ期間は 1 ミリ秒ではなく約 15 ミリ秒と報告されます。
したがって、Windows で採用されているタイム クォンタム システムにより、Sleep() が指定された遅延よりわずかに長い期間スリープするのが一般的な動作です。
以上がWindows で Sleep(1) が 15 ミリ秒スリープしているように見えるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。