본문 바로가기

My Study/Function

CreateMutex

HANDLE WINAPI CreateMutex(
  __in_opt  LPSECURITY_ATTRIBUTES lpMutexAttributes,
  __in      BOOL bInitialOwner,
  __in_opt  LPCTSTR lpName
);

lpMutexAttributes : 보안속성 지정, 핸들 상속 여부

bInitialOwner : 뮤텍스는 뮤텍스 오브젝트를 생성하는 쓰레드에게 기회를 먼저 줄 수 있다.
       크리티컬 섹션처럼 먼저 차지하는 사람이 임자가 되게 할 수도 있고(FALSE전달)
       뮤텍스를 생성하는 쓰레드가 먼저 기회를 얻을 수도 있다(TRUE전달).
       이를 결정하는 전달인자.

lpName : 뮤텍스에 이름을 붙여주기 위해 사용. 이름은 NULL로 끝나는 문자열로 지정하면 된다.
이름을 주었을 때 생성되는 뮤텍스를 가리켜 Named Mutex라 표현

위 함수를 호출하면 뮤텍스 커널 오브젝트가 생성되는데,  그 커널 오브젝트를 가리키는 핸들을 반환.
뮤텍스는 크리티컬 섹션 오브젝트와 달리 초기화 함수의 호출이 필요없다. 이미 위 함수를 호출하는 과정에서 필요한 모든
초기화가 이뤄지기 때문이다.

프로세스 커널 오브젝트는 종료가 되면 Signaled상태로 된다.
뮤젝트 커널 오브젝트는 누군가에 의해 획득이 가능할 때 Signaled상태가 된다.(사용하고있지 않는 상태)
따라서 WaitForSingleObject함수를 임계 영역 진입을 위한 뮤텍스 획득의 용도로 사용가능

'My Study > Function' 카테고리의 다른 글

CreateSemaphore  (0) 2010.02.25
ReleaseMutex  (0) 2010.02.25
InterlockedIncrement  (0) 2010.02.25
DeleteCriticalSection  (0) 2010.02.25
LeaveCriticalSection  (1) 2010.02.25