락 (컴퓨터 과학)

컴퓨터 과학에서 락(lock) 또는 뮤텍스(mutex, 상호 배제에서)는 여러 스레드를 실행하는 환경에서 자원에 대한 접근에 제한을 강제하기 위한 동기화 매커니즘이다. 잠금이라고도 한다. 락은 상호 배제 동시성 제어 정책을 강제하기 위해 설계된다.

유형 
일반적으로 락은 일치 데이터에 접근하기 전에 락을 획득함으로써 각 스레드가 협업하는 어드바이저리 락(advisory lock)이다. 또, 일부 시스템들은 잠금된 자원에 대한 비인가 접근을 시도하면 예외를 강제하는 맨더터리 락(mandatory lock)을 구현한다.

가장 단순한 록의 유형은 바이너리 세마포어이다. 잠금된 데이터로의 배타적 접근을 제공한다. 그 밖의 스킴들은 데이터를 읽기 위한 공유 접근을 제공하기도 한다. 그 밖의 폭넓게 구현되는 접근 모드로는 exclusive(배타), intend-to-exclude, intend-to-upgrade가 있다.

데이터베이스 락

언어 지원 

프로그래밍 언어는 동기화 지원 면에서 다양한 편이다:
 ISO/IEC C 표준
 오브젝티브-C
 C#
 VB.NET
 자바
 파이썬
 루비
 에이다
 x86 어셈블리어
 PHP

같이 보기 
 임계 구역
 파일 잠금
 모니터 (동기화)
 세마포어

각주

외부 링크 
 Tutorial on Locks and Critical Sections

소프트웨어 디자인 패턴
동시성 제어