토픽 24 / 85·프로세스 동기화와 교착상태
뮤텍스 (Mutex)
뮤텍스 (Mutex)
상호 배제(Mutual Exclusion)를 위한 동기화 객체로, 한 번에 하나의 스레드만 임계 구역에 진입하도록 보장하는 이진 잠금 메커니즘
목적: 상호 배제, 임계 구역 보호, 데이터 일관성
특징: 소유권(lock한 스레드만 unlock), 이진(0 또는 1), 블로킹, 재진입(Reentrant) 가능
연산
- •lock()/acquire(): 뮤텍스 획득, 이미 잠겨있으면 블록
- •unlock()/release(): 뮤텍스 해제, 소유 스레드만 가능
- •trylock(): 비블로킹 시도, 즉시 반환
동작: lock() → 임계 구역 → unlock()
소유권: lock한 스레드만 unlock 가능(세마포어와 차이)
시간 복잡도: lock/unlock O(1)
장점: 단순한 상호 배제, 소유권 명확, 데이터 보호
단점: 데드락 가능, 우선순위 역전, 블로킹(대기)
종류
- •Fast Mutex: 기본, 재진입 불가
- •Recursive Mutex: 같은 스레드 여러 번 lock 가능
- •Timed Mutex: 타임아웃 지원
적용사례: pthread_mutex(POSIX), std::mutex(C++), 공유 자원 보호, 은행 계좌, 파일 접근
비교: 뮤텍스(이진/소유권) vs 세마포어(카운터/소유권없음) vs 스핀락(바쁜대기)
연관: 동기화, 세마포어, 임계 구역, 데드락, pthread