title: "**커널 객체를 이용한 쓰래드 동기화(4) - 세마포어**"
description: "**커널 객체를 이용한 쓰래드 동기화(4) - 세마포어**"
cleanUrl: /sw-engineer/thread-synchronization-semaphore
ogImage: ""
floatFirstTOC: right

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

HANDLE CreateSemaphore (
    PSECURITY_ATTRIBUTE psa,
    LONG lInitialCount,
    LONG lMaximumCount,
    PCTSTR pszName );

lInitialCount : 현재 가능한 리소스의 갯수. 초기값으로 임의의 수를 정할 수 있다.
lMaximumCount : 가능한 리소스의 최대 갯수

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

//이 함수는 단지 세마포어의 현재 리소스 카운트에
//lReleaseCount의 값을 더한다.
//plPreviousCount더하기 전의 현재 리소스 카운트
BOOL ReleaseSemaphore (
    HANDLE hsem,
    LONG lReleaseCount,
    PLONG plPreviousCount );