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 중국어 웹사이트의 기타 관련 기사를 참조하세요!