Mutex와 SpinLock의 차이는 무엇인가요?
Mutex(Mutual Exclusion)와SpinLock은 동시성 프로그래밍에서 여러 쓰레드가 공유 리소스에 동시에 접근하지 못하도록 하는 동기화 기술이다.Mutex는 오직 하나의 쓰레드만 임계 구역(critical section) 에 접근할 수 있도록 보장한다.
하나의 쓰레드가
Mutex를 획득하면 다른 쓰레드는 해당Mutex를 획득할 때까지 대기한다.Mutex가 잠겨 있으면 현재 쓰레드는 다른 작업을 수행하고,Mutex가 해제되면 다시 공유 리소스에 접근할 수 있다.
SpinLock은
Mutex와 유사한 목적을 갖지만, 쓰레드가Mutex를 획득할 때까지 반복적으로 락을 시도하는 동기화 기법이다.락을 획득할 때까지 쓰레드가 계속해서 무한 반복하며(Spin), 다른 쓰레드가 락을 해제할 때까지 기다린다.
SpinLock은
Mutex가 잠겨 있으면 현재 쓰레드는 해제될 때까지 대기하고,Mutex가 해제되면 즉시 공유 리소스에 접근한다.
꼬리 질문
임계 구역(critical section)이 무엇인가요?
여러 프로세스가 데이터를 공유하며 수행될 때, 각 프로세스에서 공유 데이터를 접근하는 프로그램 코드 부분을 말한다.
공유 리소스에 동시에 접근하지 못하도록 보호하는 코드 블록을 말한다.
공유 데이터를 여러 프로세스가 동시에 접근할 때 잘못된 결과를 만들 수 있기 때문에, 한 프로세스가 임계 구역을 수행할 때는 다른 프로세스가 접근하지 못하도록 해야 한다.
Last updated