Mutex와 SpinLock의 차이는 무엇인가요?

  • Mutex(Mutual Exclusion)SpinLock동시성 프로그래밍에서 여러 쓰레드가 공유 리소스에 동시에 접근하지 못하도록 하는 동기화 기술이다.

  • Mutex는 오직 하나의 쓰레드만 임계 구역(critical section) 에 접근할 수 있도록 보장한다.

    • 하나의 쓰레드가 Mutex를 획득하면 다른 쓰레드는 해당 Mutex를 획득할 때까지 대기한다.

    • Mutex가 잠겨 있으면 현재 쓰레드는 다른 작업을 수행하고, Mutex가 해제되면 다시 공유 리소스에 접근할 수 있다.

  • SpinLockMutex와 유사한 목적을 갖지만, 쓰레드가 Mutex를 획득할 때까지 반복적으로 락을 시도하는 동기화 기법이다.

    • 락을 획득할 때까지 쓰레드가 계속해서 무한 반복하며(Spin), 다른 쓰레드가 락을 해제할 때까지 기다린다.

    • SpinLockMutex가 잠겨 있으면 현재 쓰레드는 해제될 때까지 대기하고, Mutex가 해제되면 즉시 공유 리소스에 접근한다.

꼬리 질문

임계 구역(critical section)이 무엇인가요?

  • 여러 프로세스가 데이터를 공유하며 수행될 때, 각 프로세스에서 공유 데이터를 접근하는 프로그램 코드 부분을 말한다.

  • 공유 리소스에 동시에 접근하지 못하도록 보호하는 코드 블록을 말한다.

  • 공유 데이터를 여러 프로세스가 동시에 접근할 때 잘못된 결과를 만들 수 있기 때문에, 한 프로세스가 임계 구역을 수행할 때는 다른 프로세스가 접근하지 못하도록 해야 한다.

Last updated