다음을 통해 공유


타이머 정보

이 항목에서는 타이머를 만들고, 식별하고, 설정하고, 삭제하는 방법을 설명합니다. 애플리케이션은 지정된 시간이 경과한 후 타이머를 사용하여 창에 대한 이벤트를 예약합니다. 타이머에 대해 지정된 간격(또는 시간 제한 값)이 경과할 때마다 시스템은 타이머와 연결된 창에 알립니다. 타이머의 정확도는 시스템 클록 속도와 애플리케이션이 메시지 큐에서 메시지를 검색하는 빈도에 따라 달라지므로 제한 시간 값은 근사치입니다.

이 항목은 다음과 같은 섹션으로 구성됩니다.

타이머 작업

애플리케이션은 SetTimer 함수를 사용하여 타이머를 만듭니다. 새 타이머는 생성되는 즉시 간격 타이밍을 시작합니다. 애플리케이션은 SetTimer를 사용하여 타이머의 제한 시간 값을 변경할 수 있으며 KillTimer 함수를 사용하여 타이머를 삭제할 수 있습니다. 시스템 리소스를 효율적으로 사용하려면 애플리케이션에서 더 이상 필요하지 않은 타이머를 제거해야 합니다.

각 타이머에는 고유 식별자가 있습니다. 타이머를 만들 때 애플리케이션은 식별자를 지정하거나 시스템에서 고유한 값을 만들 수 있습니다. WM_TIMER 메시지의 첫 번째 매개 변수에는 메시지를 게시한 타이머의 식별자가 포함됩니다.

SetTimer 호출에서 창 핸들을 지정하는 경우 애플리케이션은 타이머를 해당 창과 연결합니다. 타이머의 제한 시간 값이 경과할 때마다 시스템은 타이머와 연결된 창에 WM_TIMER 메시지를 게시합니다. SetTimer 호출에 창 핸들이 지정되지 않은 경우 타이머를 만든 애플리케이션은 메시지 큐에서 WM_TIMER 메시지를 모니터링하고 적절한 창으로 디스패치해야 합니다.

참고 항목

선택적 TIMERPROC 콜백 함수를 지정하면 메시지 루프 중에 함수가 호출되고 WM_TIMER WNDPROC 콜백에 디스패치되지 않습니다.

타이머가 경과할 때 알림을 받아야 하는 경우 대기 가능한 타이머를 사용합니다. 자세한 내용은 대기 가능한 타이머 개체를 참조 하세요.

고해상도 타이머

카운터는 증분 변수를 참조하기 위해 프로그래밍에 사용되는 일반적인 용어입니다. 일부 시스템에는 고해상도 경과 시간을 제공하는 고해상도 성능 카운터가 포함되어 있습니다.

시스템에 고해상도 성능 카운터가 있는 경우 QueryPerformanceFrequency 함수를 사용하여 초당 개수로 빈도를 표현할 수 있습니다. 개수의 값은 프로세서에 따라 다릅니다. 예를 들어 일부 프로세서에서 개수는 프로세서 클록의 주기 속도일 수 있습니다.

QueryPerformanceCounter 함수는 고해상도 성능 카운터의 현재 값을 검색합니다. 애플리케이션은 코드 섹션의 시작과 끝에서 이 함수를 호출하여 기본적으로 카운터를 고해상도 타이머로 사용합니다. 예를 들어 QueryPerformanceFrequency고해상도 성능 카운터의 빈도가 초당 50,000 카운트임을 나타낸다고 가정합니다. 애플리케이션이 코드 섹션 바로 앞과 바로 다음에 QueryPerformanceCounter를 호출하여 시간 초과될 경우 카운터 값은 각각 1500개 및 3500개 개 수일 수 있습니다. 이러한 값은 코드가 실행되는 동안 .04초(2000개 카운트)가 경과했음을 나타냅니다.

대기 가능한 타이머 개체

대기 가능한 타이머 개체는 지정된 기한이 도착할 때 상태가 신호로 설정되는 동기화 개체입니다. 만들 수 있는 대기 가능한 타이머에는 수동 재설정 및 동기화의 두 가지 유형이 있습니다. 두 형식의 타이머는 주기적인 타이머일 수도 있습니다.

스레드는 CreateWaitableTimer 또는 CreateWaitableTimerEx 함수를 사용하여 타이머 개체를 만듭니다. 만드는 스레드는 타이머가 수동 재설정 타이머인지 동기화 타이머인지를 지정합니다. 만드는 스레드는 타이머 개체의 이름을 지정할 수 있습니다. 다른 프로세스의 스레드는 OpenWaitableTimer 함수 호출에서 해당 이름을 지정하여 기존 타이머에 대한 핸들을 열 수 있습니다. 타이머 개체에 대한 핸들이 있는 스레드는 대기 함수 중 하나를 사용하여 타이머 상태가 신호로 설정될 때까지 기다릴 수 있습니다.

스레드 동기화에 대기 가능한 타이머 개체를 사용하는 방법에 대한 자세한 내용은 대기 가능한 타이머 개체를 참조 하세요.