시스템
Mutex
다른 이름: 뮤텍스 , Lock
정의
Mutual Exclusion. 상호 배제 락. 공유 자원을 한 번에 한 스레드만 접근하도록 보장. lock() 획득, unlock() 해제. Critical Section(임계 영역) 보호. 소유권 있음(락 건 스레드만 해제). Deadlock, Priority Inversion 주의
상세 설명
기술 스펙
- lock(): 뮤텍스 획득 (이미 잠기면 대기)
- unlock(): 뮤텍스 해제
- try_lock(): 비블로킹 획득 시도
- 소유권: 락 건 스레드만 해제 가능
- Recursive Mutex: 같은 스레드가 여러 번 락
- RAII: std::lock_guard, std::unique_lock (C++)
실무 활용
- 카운터 증가: count++ (Race Condition 방지)
- 공유 자료구조: 리스트, 맵 동기화
- 파일 쓰기: 동시 쓰기 방지
- 싱글톤: getInstance() 동기화
장점
- Race Condition 방지: 원자성 보장
- 단순한 개념: lock/unlock만
- 소유권: 잘못된 해제 방지
단점 및 제약
- Deadlock: 순환 대기 (락 순서 중요)
- Priority Inversion: 낮은 우선순위 스레드가 락 점유
- 성능 저하: 대기 시간
- Contention: 여러 스레드가 같은 뮤텍스 경쟁
호환성
POSIX pthread_mutex, C++ std::mutex, Java synchronized, Python threading.Lock
표준 정보
표준화 기구: POSIX Threads, 운영체제 교과서
출시 연도: 1965년