본문 바로가기

My Study/Function

CreateSemaphore

HANDLE WINAPI CreateSemaphore(
  __in_opt  LPSECURITY_ATTRIBUTES lpSemaphoreAttributes,
  __in      LONG lInitialCount,
  __in      LONG lMaximumCount,
  __in_opt  LPCTSTR lpName
);
뮤텍스와 비슷하지만 임계영역에 접근 가능한 쓰레드 개수를 조절하는 기능 존재.

lpSemaphoreAttributes : 보안 속성을 지정하기 위한 매개변수.

lInitialCount : 이 값을 기반으로 임계 영역에 접근 가능한 쓰레드의 개수를 제한한다.

lMaximumCount : 세마포어가 지닐 수 있는 값의 최대 크기를 지정.
                          이 값이 1이 될 경우 뮤텍스와 동일한 기능을 하는 바이너리 세마포어가 구성. 
                          기본적으로 lInitialCount로 전달되는 값보다 커야 한다.

lpName : 세마포어에 이름을 붙이기 위해 사용.

세마포어 생성될 때 InitialCount값에 의해 초기 카운트가 결정.
카운트가 0인 경우 Non-Signaled상태, 1 이상인 경우 Signaled상태.
WaitForSingleObject함수를 호출할 경우, 카운트 값이 하나씩 감소

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

CreateEvent  (0) 2010.02.25
ReleaseSemaphore  (0) 2010.02.25
ReleaseMutex  (0) 2010.02.25
CreateMutex  (0) 2010.02.25
InterlockedIncrement  (0) 2010.02.25