title: "**커널 객체를 이용한 쓰래드 동기화(5) - 뮤텍스"**
description: "**커널 객체를 이용한 쓰래드 동기화(5) - 뮤텍스**"
cleanUrl: /sw-engineer/thread-synchronization-mutex
ogImage: ""
floatFirstTOC: right

제프리 릭터의 Programming Applications for Microsoft Windows. (4th Editon) 에 담긴 내용입니다.

HANDLE CreateMutex (
    PSECURITY_ATTRIBUTES psa,
    BOOL fInitialOwner,
    PCTSTR pszName );

fInitialOwner : 초기 상태 설정 값. FALSE가 넘어올 경우, 뮤텍스의 쓰래드 ID와 재귀 카운터가 0으로 설정된다. 이 말은 뮤텍스가 비소유 상태가 되고, 따라서 신호 상태로 된다는 뜻이다. TRUE가 넘어올 경우에는 뮤텍스 쓰래드 ID가 호출자 쓰래드의 ID로 설정되고, 재귀 카운터는 1로 설정된다. 따라서 비신호 상태가 된다.

HANDLE OpenMutex (
    DWORD fdwAccess,
    BOOL bInheritHandle,
    PCTSTR pszName );

//뮤텍스의 재귀 카운트를 1만큼 감소시킨다. 재귀 카운터가 0이되면
//쓰래드 ID도 0으로 설정 되고, 뮤텍스는 신호 상태가 된다.
BOOL ReleaseMutex ( HANDLE hMutex );