타이머 기반 동기화 -------------------------------------------------------------------------------------------
커널 오브젝트의 signaled 상태는 매우 중요한 개념이다. 왜냐하면 어떠한 커널 오브젝트도 특정상황이 도래하면 signaled 상태가 되기 때문이다.
타이머 기반 동기화란 그 점을 이용하여 타이머 오브젝트라는 것을 생성하고 그 오브젝트가 일정시간이 지나면 하나의 자동으로 signaled상태가 되는 것을 의미한다.
타이머 기반 동기화의 종류 -------------------------------------------------------------------------------------
타이머 기반동기화는 2가지가 존재한다.
1. 수동 리셋 타이머 : 알람이라고 생각하면 된다. 시간을 맞춰놓으면 그 시간에 특정 동작을 실행하는 타이머 오브젝트를 의미한다.
2. 주기적 타이머 : 수동리셋 타이머에 주기적인 특성이 추가된 오브젝트 특정 시간에 맞춰놓으면 그 시간에 특정 동작이 실행되고 그 이후로 또 특정 시간마다 다시 특정 동작을 실행하는 오브젝트를 의미한다.
타이머 오브젝트 생성함수 --------------------------------------------------------------------------------------
HANDLE CreateWaitableTimerf (
LPSECURITY_ATTRIBUTES lpTimrAttributes, -> 보안속성 지정 핸들을 자식 프로세스에 상속할경우는 그에 맞는 값 아닌 경우는 NULL
BOOL bMaunalReset, -> 타이머 오브젝트를 수동리셋모드로 생성할 것인지, 자동리셋모드로 생성할 것인지 결정하는 함수
LPCTSTR lpTimerName -> 타이머 오브젝트에 이름을 붙여줄 경우 사용하는 전달인지 NULL시 이름없는 오브젝트를 생성한다.
);
타이머 오브젝트 시간설정 함수 ---------------------------------------------------------------------------------
BOOL SetWaitableTimer (
HANDLE hTimer,
const LARGE_INTEGER* pDueTime,
LONG lPeriod,
PTIMERAPCROUTINE pfnCompletionRoutine,
LPVOID lpArgToCompletionRoutine,
BOOL fResume
);
HANDLE hTimer, -> 알람을 설정할 타이머 오브젝트의 핸들을 인자로 전달한다. 정해진 시간이 되면 이 핸들의 커널 오브젝트는 signaled상태가 된다.
const LARGE_INTEGER* pDueTime, -> 알람 시간을 지정한다. +라면 절대시간을 의미하고 -값이 전달되면 상대시간을 의미하게 된다.
ex1) "A시 B분에 알람을 울려주세요" +로 시간설정
ex2) "지금으로부터 A초 후에 알람을 울려주세요" - 값을 넣어주면 10억부늬 1초 단위로 시간을 설정한다.
LONG lPeriod, 타이머가 주기적으로 알람을 울리게 할때 전달하는 인자 주기가 되는 시간을 1/1000초 단위로 전달하면 된다. 0을 전달할 경우 주기적을 알람을 사용하지 않는다는 의미이다.
PTIMERAPCROUTINE pfnCompletionRoutine,
LPVOID lpArgToCompletionRoutine,
-> 루틴 타이머를 설정하는 함수 추후 설명
BOOL fResume -> 컴퓨터 전원 관리와 관련 있는 매개변수이다. 기본적으로 FALSE 전달을 원칙으로 한다.
타이머 정지 함수 ---------------------------------------------------------------------------------------
BOOL CancelWaitableTimer (
HANDLE hTimer
);
hTimer, 알람을 해제할 타이머 오브젝트의 핸들을 전달한다. 전달된 핸들의 타이머 오브젝트는 알람이 해제된다. Inactive 상태가 된다.
'게임개발공부 > 서적공부' 카테고리의 다른 글
윈도우 시스템 프로그래밍 16장 <컴퓨터 구조4> (0) | 2013.11.24 |
---|---|
윈도우 시스템 프로그래밍 <쓰레드 풀> (0) | 2013.11.23 |
윈도우 시스템 프로그래밍 <커널모드 동기화> #이벤트 PLUS 뮤텍스 (0) | 2013.11.23 |
윈도우 시스템 프로그래밍 <커널모드 동기화> #실행순서 동기화 (0) | 2013.11.21 |
윈도우 시스템 프로그래밍 <커널모드 동기화 방식 1> (0) | 2013.11.17 |