728x90
타이머 기반 동기화
- 타이머 : 일정 시간 뒤에 Signaled 상태가 됨
-> 수동 리셋 타이머 : 지정한 시간 뒤에 Signaled 상태가 됨
-> 자동 리셋 타이머 : 지정한 시간 뒤에 Signaled 상태가 되고 이후 지정한 시간마다 반복적으로 Signaled 상태가 될 수 있음
HANDLE CreateWaitableTimerW(
LPSECURITY_ATTRIBUTES lpTimerAttributes,
BOOL bManualReset, // 자동 리셋(FALSE), 수동 리셋 설정(TRUE)
LPCWSTR lpTimerName
);
BOOL SetWaitableTimer(
HANDLE hTimer,
const LARGE_INTEGER *lpDueTime, // 원하는 시간 설정
LONG lPeriod, // 주기적인 시간 설정
PTIMERAPCROUTINE pfnCompletionRoutine,
LPVOID lpArgToCompletionRoutine,
BOOL fResume
);
#include <stdio.h>
#include <tchar.h>
#include <windows.h>
int _tmain(int argc, TCHAR* argv[])
{
HANDLE hTimer = NULL;
LARGE_INTEGER liDueTime;
liDueTime.QuadPart = -100000000; // 음수 값을 주게 되면 상대 시간을 의미(ns 단위)
hTimer = CreateWaitableTimer(NULL, TRUE, _T("WaitableTimer"));
if (!hTimer)
{
_tprintf(_T("CreateWaitableTimer error %d \n"), GetLastError());
return 1;
}
_tprintf(_T("Waiting for 10 Seconds...\n"));
SetWaitableTimer(hTimer, &liDueTime, 0, NULL, NULL, FALSE);
WaitForSingleObject(hTimer, INFINITE);
_tprintf(_T("Timer was Signaled\n"));
MessageBeep(MB_ICONEXCLAMATION);
return 0;
}
728x90
'Programming > System Programming' 카테고리의 다른 글
윈도우즈 시스템 프로그래밍 - 15. 쓰레드 풀링(2) (0) | 2020.08.09 |
---|---|
윈도우즈 시스템 프로그래밍 - 15. 쓰레드 풀링(1) (0) | 2020.08.09 |
윈도우즈 시스템 프로그래밍 - 14. 쓰레드 동기화 기법2(2) (0) | 2020.08.09 |
윈도우즈 시스템 프로그래밍 - 14. 쓰레드 동기화 기법2(1) (0) | 2020.08.09 |
윈도우즈 시스템 프로그래밍 - 13. 쓰레드 동기화 기법1(4) (0) | 2020.08.05 |