-
timeBeginPeriod function개발/C·C++ 2021. 6. 10. 17:36
Sleep 함수를 이용하면 인수로 넣은 수의 밀리세컨드만큼 스레드가 잠들어있다가 깨어납니다. 스레드가 Sleep 함수를 호출하면 운영체제는, 타이머 인터럽트가 실행될 때 스레드가 실행할 수 있도록 예약을 걸어 놓습니다. 시스템은 Sleep 함수의 인수로 받은 시간을 보장하지 않습니다. 타이머 인터럽트 간격은, 최근 컴퓨터는 일반적으로 15.625ms입니다(1000ms 64로 나눈 값). 이보다 빠를 수도, 조금 느릴 수도 있습니다.
더 작은 간격으로 타이머를 사용하고 싶다면 timeBeginPeriod 함수를 사용할 수 있습니다. 인수는 밀리세컨드 단위입니다. 1을 넣어도 문제는 없겠지만 더 정확하게 사용하기 위해서는 TIMECAPS 객체와 timeGetDevCaps 함수를 이용하는 것이 좋습니다. 타이머 사용이 끝나면 timeBeginPeriod 함수에 사용했던 인수를 timeEndPeriod 함수에도 넣어 호출합니다.
TIMECAPS 구조체는 wPeriodMin, wPeriodMax 필드를 가지는데, timeGetDevCaps 함수를 통해 시스템이 지원하는 최소, 최대 시간 해상도를 구할 수 있습니다.
>> 출처
https://randomascii.wordpress.com/2020/10/04/windows-timer-resolution-the-great-rule-change/\
https://docs.microsoft.com/en-us/windows/win32/api/timeapi/ns-timeapi-timecaps
https://docs.microsoft.com/en-us/windows/win32/api/timeapi/nf-timeapi-timegetdevcaps
https://docs.microsoft.com/en-us/windows/win32/api/timeapi/nf-timeapi-timebeginperiod
'개발 > C·C++' 카테고리의 다른 글
Guaranteed Copy Elison (0) 2021.06.27 InterlockedExchange, InterlockedCompareExchange (0) 2021.06.10 WSASend function (0) 2021.06.06 IOCP(2) (0) 2021.06.04 [Design Pattern] Observer (0) 2021.05.30