멀티스레드 환경에서 공유 자원 접근을 제어하는 동기화 도구인 뮤텍스(Mutex)와 세마포어(Semaphore)의 차이점을 정리한다.
동기화 메커니즘 비교
뮤텍스와 세마포어는 자원 보호를 목적으로 하나 작동 방식에 차이가 있다.
# Mutex (상호 배제)
mutex.lock()
# --- 임계 구역 (Critical Section) ---
mutex.unlock()
# Semaphore (자원 개수 관리)
semaphore.wait() # 자원 사용 요청
# --- 자원 사용 ---
semaphore.signal() # 자원 반납 알림
뮤텍스는 자원 독점을 위해 잠금 기능을 수행하며, 세마포어는 가용 자원 개수를 관리하고 신호를 전달하는 방식으로 동작한다.
적용 기준
- 단일 자원 독점 필요 시: 뮤텍스 적용
- 다수 자원 관리 또는 실행 순서 조율 필요 시: 세마포어 적용
적절한 동기화 도구 선택은 시스템 안정성과 데이터 일관성 확보를 위해 필수적인 것 같다.