[Mutex]

Development/C/C++ 2011. 12. 1. 20:04

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를 반환하는 함수

BOOL ReleaseMutex ( HANDLE hMutex ) ;        // 반환하고자 하는 Mutex를 인자로 전달

 
4. Mutex를 소멸하는 함수

BOOL CloseHandle ( HANDLE  hObject ) ;         // 소멸하고자 하는 커널 오브젝트의 핸들을 전달

Mutex 오브젝트 소유자가 존재하는 경우 non-signaled 상태, 소유자가 존재하지 않는 경우 signal 상태가 된다.

 

 
 

'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
Posted by cyj4369
,