Learning
토픽 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