ホームページ >バックエンド開発 >C++ >Windows で Sleep(1) が 15 ミリ秒スリープしているように見えるのはなぜですか?

Windows で Sleep(1) が 15 ミリ秒スリープしているように見えるのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-28 00:23:02823ブラウズ

Why Does Sleep(1) Seem to Sleep for 15ms in Windows?

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 <p>このコードは Windows 7 で実行される可能性があります。スリープ期間は 1 ミリ秒ではなく約 15 ミリ秒と報告されます。</p>
<p>したがって、Windows で採用されているタイム クォンタム システムにより、Sleep() が指定された遅延よりわずかに長い期間スリープするのが一般的な動作です。</p></windows.h></ctime></iostream></code>

以上がWindows で Sleep(1) が 15 ミリ秒スリープしているように見えるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。