"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > ## WinAPI의 Sleep(1)이 예상보다 긴 절전 모드를 유발하는 이유는 무엇입니까?

## WinAPI의 Sleep(1)이 예상보다 긴 절전 모드를 유발하는 이유는 무엇입니까?

2024년 10월 31일에 게시됨
검색:229

## Why Does Sleep(1) in WinAPI Cause a Lengthier Slumber Than Expected?

WinAPI 절전 기능 수수께끼: 예상보다 긴 절전 모드

매개변수 1을 사용하여 WinAPI 절전 기능을 호출하면 사용자에게 스레드 지연이 발생할 수 있음 예정된 기간을 초과했습니다. 실제로 일련의 100회 Sleep(1) 호출을 반복하면 규정된 100ms보다 훨씬 긴 1500ms의 총 수면 시간이 생성되었습니다.

장기 수면의 원인:

이 동작은 Windows 스레드 스케줄러에 내재되어 있습니다. 이는 시간 할당량, 즉 스레드가 실행될 수 있는 정의된 기간에 따라 작동합니다. 0이 아닌 지연은 본질적으로 가장 가까운 완전한 양자로 반올림됩니다.

그럴듯한 시스템 문제:

관찰된 동작은 일반적이지만 배제하는 것이 유리할 수 있습니다. 문제를 악화시킬 수 있는 잠재적인 시스템 문제:

  • 마더보드(MOBO): 결함이 있는 MOBO 하드웨어는 시계 정확도에 영향을 미쳐 절전 시간이 길어질 수 있습니다.
  • CPU: MOBO 문제와 마찬가지로 CPU 불규칙성으로 인해 타이밍 불일치가 발생할 수도 있습니다.
  • Windows 설치: 시스템 오류나 불완전한 설치로 인해 Windows의 시간 관리 기능이 중단될 수 있습니다.

추가 고려 사항:

실행 중인 다른 프로그램이 시스템 전체 타이머 해상도를 조정하여 잠재적으로 양자 크기가 더 작아질 수 있다는 점은 주목할 만합니다. 이는 Sleep(1) 지연이 의도된 1ms 기간 내에 있는 것으로 보고되는 인스턴스를 설명할 수 있습니다. Windows 7의 기본 타이머 해상도는 1ms가 아닌 약 15.6ms여야 합니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3