>  기사  >  백엔드 개발  >  Windows에서 Sleep(1)이 15ms 동안 절전 모드로 표시되는 이유는 무엇입니까?

Windows에서 Sleep(1)이 15ms 동안 절전 모드로 표시되는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-28 00:23:02714검색

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

Windows의 Sleep() 함수 동작

Sleep() 함수를 호출할 때 스레드는 일반적으로 지정된 기간 동안 실행을 일시 중지합니다. 그러나 어떤 경우에는 스레드가 더 오랫동안 휴면 상태로 있는 것처럼 보일 수 있습니다.

Windows 7과 같은 Windows 버전에서는 Sleep()이 시간 양자에 따라 작동합니다. 즉, 0이 아닌 지연은 가장 가까운 양자로 반올림되어 수면 시간이 약간 길어질 수 있습니다.

이 동작의 일반적인 증상은 Sleep(1)에 대한 호출이 실제로 약 15ms의 수면. 이는 운영 체제 스케줄러가 일반적으로 15.6ms의 퀀텀을 사용하기 때문입니다.

이를 설명하기 위해 다음 코드 조각이 제공됩니다.

<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에서 실행되는 경우 이 코드는 1ms가 아닌 약 15ms의 절전 시간을 보고합니다.

따라서 Windows에서 사용하는 시간 양자 시스템으로 인해 Sleep()이 지정된 지연보다 약간 더 긴 기간 동안 절전 모드로 전환되는 것이 일반적인 동작입니다.

위 내용은 Windows에서 Sleep(1)이 15ms 동안 절전 모드로 표시되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.