>  기사  >  백엔드 개발  >  WinAPI Sleep() 함수 호출이 때때로 예상 기간을 초과하는 이유는 무엇입니까?

WinAPI Sleep() 함수 호출이 때때로 예상 기간을 초과하는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-26 22:02:02368검색

Why Does WinAPI Sleep() Function Call Sometimes Exceed the Expected Duration?

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

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