Choose a default theme

You can change your theme from the menu

세마포어

세마포어는 카운터와 대기·신호 연산으로 자원 사용이나 실행 순서를 조절하는 동기화 수단이다.

원리

허용 가능한 자원 수를 카운터로 나타내고 획득 시 감소, 반환 시 증가시키는 식으로 사용한다. 초기값과 연산 순서에 따라 의미가 달라진다.

예시

동시에 세 개의 작업만 특정 자원을 사용하게 하려면 초기 허용 수를 3으로 설정하고 작업 종료 시 허용을 돌려줄 수 있다.

주의할 점

카운터를 잘못 반환하면 제한이 깨지거나 영원히 기다릴 수 있다. 뮤텍스의 소유권 규칙과 세마포어를 동일하게 가정하지 말고 실패·취소 경로까지 균형을 맞춘다.

참고 자료