이벤트 기반 동기화

Server/Winodw Network 2015. 11. 11. 14:43

이벤트는 신호, 비신호 상태를 감지한다.

즉 ,상태에 따라서 실행되어야 할 이벤트가 결정된다.

 

이벤트 오브젝트 생성

HANDLE  CreateEvent(

LPSECURITY_ATTRIBUTES        lpEventAttributes,

BOOL    bManualReset,

BOOL    bInitialState,

LPCTSTR    lpName );

 

 

1. lpEventAttributes  :  보안 속성을 지정할 때 사용한다. 핸들을 자식 프로세스에게 상속하고자 할 때 사용한다.

 

2. bManualReset  :   수동 리셋,  자동 리셋모드로 생성할 것인가를 정하는 인자

                               TRUE는 수동 리셋모드, FALSE는 자동 리셋모드로 생성된다.

 

3. bInitialState  :    이벤트 오브젝트의 초기 상태를 결정짓는다.

   TRUE면 Signaled 상태로 생성, FALSE이면 Non-Signaled로 생성된다.

 

4. lpName :  이벤트 오브젝트에 이름을 줄 경우 사용, NULL 이면 이름없는 이벤트 오브젝트

 

 

이벤트 오브젝트 소멸

- CloseHandle 사용하면된다.

 

 

쓰레드나 프로세스가 커널 오브젝트의 경우에는 초기에 Non-Signaled로 생성된다.

그러나 종료할 경우 Signaled로 자동 변경된다.

하지만 Event Object는 자동으로 Signaled가 되지 않는다.

 

자동으로 Signaled 상태가 되는 특정한 상황은 존재하지 않는다.

 

 

이벤트 오브젝트 활용방법

 

쓰레드나 프로세스의 커널 오브젝트의 경우에 처음 생성되면 Non-Signaled상태로 생성된다.

그러나 종료될 경우에는 자동으로 Signaled 상태로 변경해야 한다.

하지만 이벤트 오브젝트는 자동으로 Signaled상태로 변경되지 않는다.

 

 

'Server > Winodw Network' 카테고리의 다른 글

쓰레드 동기화  (0) 2015.11.11
Signaled vs Non-Signaled  (0) 2015.11.11
Overlapped 모델(1)  (0) 2015.10.25
스레드의 우선순위 컨트롤  (0) 2015.10.12
프로세스, 스레드의 우선순위  (0) 2015.10.08
admin