컴퓨터 과학에서 락(lock) 또는 뮤텍스(mutex, 상호 배제에서)는 여러 스레드를 실행하는 환경에서 자원에 대한 접근에 제한을 강제하기 위한 동기화 매커니즘이다. 잠금이라고도 한다.[1] 락은 상호 배제동시성 제어 정책을 강제하기 위해 설계된다.
유형
일반적으로 락은 일치 데이터에 접근하기 전에 락을 획득함으로써 각 스레드가 협업하는 어드바이저리 락(advisory lock)이다. 또, 일부 시스템들은 잠금된 자원에 대한 비인가 접근을 시도하면 예외를 강제하는 맨더터리 락(mandatory lock)을 구현한다.
가장 단순한 록의 유형은 바이너리 세마포어이다. 잠금된 데이터로의 배타적 접근을 제공한다. 그 밖의 스킴들은 데이터를 읽기 위한 공유 접근을 제공하기도 한다. 그 밖의 폭넓게 구현되는 접근 모드로는 exclusive(배타), intend-to-exclude, intend-to-upgrade가 있다.