title: "**커널 객체를 이용한 쓰래드 동기화(3) - 대기가능 타이머**"
description: "**커널 객체를 이용한 쓰래드 동기화(3) - 대기가능 타이머**"
cleanUrl: /sw-engineer/thread-synchronization-waitable-timer
ogImage: ""
floatFirstTOC: right

제프리 릭터의 Programming Applications for Microsoft Windows. (4th Editon) 에 담긴 내용입니다.

HANDLE CreateWaitableTimer (
    PSECURITY_ATTRIBUTES psa,
    BOOL fManualReset,
    PCTSTR pszName );

fManualReset : 수동 리셋(TRUE)인지, 자동 리셋(FALSE)인지의 여부
                      이벤트에서의 수동 리셋, 자동 리셋 기능과 동일

HANDLE OpenWaitableTimer (
    DWORD dwDisiredAccess,
    BOOL bInheritHandle,
    PCTSTR pszName );

BOOL SetWaitableTimer (
    HANDLE hTimer,
    const LARGE_INTEGER *pDueTime,
    LONG lPeriod,
    PTIMERAPCROUTINE pfnCompletionRoutine,
    PVOID pvArgToCompletionRoutine,
    BOOL fResume );

// pDueTime : 타이머가 처음으로 울릴 시점
// lPeriod : 타이머가 울릴 시간 간격
// fResume : 잠시 대기(suspend)에서 재개(resume)을 지원하는 컴퓨터에서 쓰임. 보통은 FALSE로 많이 놓는다.
// pfnCompletionRoutine, pvArgToCompletionRoutine: 타이머가 신호 상태로 왔을 때에 실행될 프로시저의 함수 포인터와 매개변수. 타이머와 함께 APC(Asynchronous Procedure Call)을 사용할 경우 이용한다..