WinAPI Sleep() 함수 호출의 예기치 않은 기간
WinAPI Sleep() 함수는 스레드 실행을 일시 중지하는 데 사용됩니다. 지정된 기간. 그러나 어떤 경우에는 절전 기간이 의도한 값을 초과하는 것으로 관찰되었습니다.
Windows 7에서 Sleep(1)을 호출하면 예상되는 1ms가 아닌 약 15ms가 지연될 수 있습니다. 이는 100회의 Sleep(1) 호출 루프를 실행하고 총 수면 시간 1500ms를 관찰하여 확인되었습니다.
예상 동작
유의해야 할 사항은 다음과 같습니다. 이 기간 연장은 Windows 운영 체제의 일반적인 동작입니다. 스레드 스케줄러는 미리 정의된 시간 간격인 시간 할당량에 따라 작동합니다. 0이 아닌 모든 지연 요청은 가장 가까운 전체 퀀텀으로 조정됩니다.
따라서 절전 기간은 가장 가까운 시간 퀀텀(이 경우 15ms)으로 올라갑니다.
종속성 외부 요인
수면 기간은 시스템 전체 타이머 해상도의 영향을 받을 수도 있습니다. 기본적으로 Windows 7에서는 이 해상도를 15.6ms로 설정합니다. 그러나 다른 프로그램이나 시스템 구성에서 이 설정을 수정하여 타이머 해상도(예: 1ms)가 낮아질 수 있습니다.
이러한 시나리오에서는 Sleep(1) 호출의 절전 시간이 더 짧아질 수 있습니다.
위 내용은 WinAPI Sleep() 함수 호출이 때때로 예상 기간을 초과하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!