출처 : http://anyflow.egloos.com/776075
제프리 릭터의 Programming Applications for Microsoft Windows에 담긴 내용입니다.
세마포어(semaphore) 커널 객체 : 리소스 카운팅에 이용된다. 사용 카운트 외에도 두 개의 부호없는 32비트 값(최대 리소스 카운트, 현재 리소스 카운트)을 갖는다. 최대 리소스 카운트는 세마포어가 제어할 수 있는 최대 리소스 갯수를 나타내고, 현재 리소스 카운트는 현재 사용 가능한 리소스의 갯수를 나타낸다.
세마포어가 따르는 규칙
현재 리소스 카운트가 0보다 크면, 세마포어는 신호 상태에 있다.
현재 리소스 카운트가 0이면, 세마포어는 비신호 상태에 있다.
시스템은 세마포어의 현재 리소스 카운트가 음수가 되는 것을 허용하지 않는다.
현재 리소스 카운트는 최대 리소스 카운트보다 클 수 없다.
세마포어(semaphore) 커널 객체 : 리소스 카운팅에 이용된다. 사용 카운트 외에도 두 개의 부호없는 32비트 값(최대 리소스 카운트, 현재 리소스 카운트)을 갖는다. 최대 리소스 카운트는 세마포어가 제어할 수 있는 최대 리소스 갯수를 나타내고, 현재 리소스 카운트는 현재 사용 가능한 리소스의 갯수를 나타낸다.
세마포어가 따르는 규칙
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 );
'Development > C/C++' 카테고리의 다른 글
코드 실행 시간 측정 방법 정리 (0) | 2011.08.13 |
---|---|
커널 객체를 이용한 쓰래드 동기화(5) - 뮤텍스 (0) | 2011.08.13 |
커널 객체를 이용한 쓰래드 동기화(3) - 대기가능 타이머 (0) | 2011.08.13 |
커널 객체를 이용한 쓰래드 동기화(2) - 이벤트 (0) | 2011.08.13 |
커널 객체를 이용한 쓰래드 동기화(1) - 기본 사항 (0) | 2011.08.13 |
안정적인 DNS서비스 DNSEver