자원 풀 제한
DB 연결, 워커 슬롯, 요청 토큰처럼 N개까지만 허용할 때 사용한다.
카운터로 동시 접근 수를 제한하고, mutex와 조합해 공유 자료구조의 실제 변경 구간을 보호한다.
DB 연결, 워커 슬롯, 요청 토큰처럼 N개까지만 허용할 때 사용한다.
소유권보다 완료 알림이 중요할 때 wait와 signal을 분리해 쓴다.
empty, full, mutex 세 값을 함께 써야 빈 슬롯과 차 있는 슬롯을 구분한다.
empty 또는 full을 먼저 잡고, 그 다음 mutex로 버퍼 접근만 짧게 보호한다.
mutex를 먼저 잡고 세마포어에서 기다리면 상대 스레드가 깨울 기회를 잃을 수 있다.