Mutex (Mutual Exclusion)
CRITICAL_SECTIOn 오브젝트 이용한 방법과 상당히 유사하다. 따라서 Mutex 또한 열쇠라고 생각하고 이해하기 바란다.
Mutex 오브젝트 함수
1. Mutex 오브젝트를 생성하는 함수
HANDLE CreateMutex (
LPSECURITY_ATTRIBUTES lpMutexAttributes, // 생성된 핸들을 자식 프로세스가 상속 받도록 할 것인가에 대한 설정
BOOL bInitialOwner, // TRUE 전달시, 생성된 Mutex의 소유자가 함수를 호출한 쓰레드로 초기화
// FALSE 전달시, Mutex의 소유자가 존재하지 않음
LPCTSTR lpName // 생성되는 Mutex에 이름을 줄 경우 사용되는 인자) ;
2. 임계 영역에 들어가기 위해 Mutex를 얻는 함수
WaitForSingleObject 함수가 Mutex를 소유하는 역할을 한다.
(이 함수는 커널 오브젝트가 non-signaled 상태에서 signaled 상태가 되기를 기다리는 함수이다.
타임 아웃을 설정하여 무한 대기 상태에 빠지는 것을 막을 수도 있다.)3. 임계 영역을 나갈 때 Mutex를 반환하는 함수
4. Mutex를 소멸하는 함수
BOOL CloseHandle ( HANDLE hObject ) ; // 소멸하고자 하는 커널 오브젝트의 핸들을 전달
'Development > C/C++' 카테고리의 다른 글
[Event] (0) | 2011.12.01 |
---|---|
[Semaphore] (0) | 2011.12.01 |
[CriticalSection]의 사용 (0) | 2011.12.01 |
[시스템 함수 정리] (0) | 2011.11.30 |
[Mutex Thread 동기화 예제] (0) | 2011.11.30 |