← 질문 목록
#214깊이 0
뮤텍스와 세마포어는 무엇으로 구분하는가?
답변 연습
내 답변 적어보기접힘
이 브라우저에 자동 저장 · 0자
모범답안 확인하기내 답변 뒤에 열어보세요
소유권과 카운트가 표현하는 뜻으로 구분한다. 뮤텍스는 임계 구역을 보호한 스레드가 소유자가 된다. 세마포어는 남은 허가 수나 이벤트 신호를 카운트로 나타낸다.
| 기준 | 뮤텍스 | 세마포어 |
|---|---|---|
| 핵심 상태 | 잠김·잠김 해제 | 0에서 N까지의 카운트 |
| 해제 | 획득한 스레드가 해제 | 다른 스레드도 post 가능 |
| 대표 용도 | 공유 상태의 불변식 보호 | 동시 사용량 제한·작업 완료 알림 |
예를 들어 잔액을 갱신하는 코드는 읽기와 쓰기 사이의 불변식을 지켜야 하므로 뮤텍스와 맞다. 커넥션 풀은 동시에 내줄 수 있는 커넥션 수를 세마포어로 표현할 수 있다.
카운트를 1로 둔 바이너리 세마포어도 한 번에 하나만 통과시킨다. 그래도 소유권이 없고 다른 스레드가 신호할 수 있어 뮤텍스와 같은 도구는 아니다. 상호 배제, 용량 제한, 순서 알림 중 무엇을 표현하려는지로 고른다.