본문 바로가기
Everyday Study

2024.08.14(수) { 스레드 동기화, Lock 과 Lock의 종류

by xogns93 2024. 8. 15.

스레드 동기화(Thread Synchronization)

스레드 동기화는 멀티스레드 환경에서 여러 스레드가 공유 자원(예: 변수, 객체, 파일 등)에 동시에 접근할 때 발생할 수 있는 문제를 방지하기 위해 사용됩니다. 동기화를 통해 한 번에 하나의 스레드만 공유 자원에 접근할 수 있도록 제어할 수 있습니다. 이렇게 하지 않으면 데이터 불일치, 데이터 손상 등의 문제가 발생할 수 있습니다.

락(Lock)의 개념

**락(Lock)**은 스레드 동기화의 핵심 개념 중 하나로, 공유 자원에 대한 접근을 제어하는 메커니즘입니다. 락을 사용하면 한 스레드가 자원을 사용하는 동안 다른 스레드가 그 자원에 접근하지 못하도록 막을 수 있습니다.

락의 동작 원리

  1. 락 획득(Take a Lock): 스레드가 공유 자원에 접근하기 전에 락을 획득합니다. 이때 다른 스레드들은 자원에 접근할 수 없습니다.
  2. 자원 사용: 락을 획득한 스레드는 자원을 안전하게 사용할 수 있습니다.
  3. 락 해제(Release a Lock): 자원을 다 사용한 후, 스레드는 락을 해제합니다. 그러면 대기 중인 다른 스레드가 락을 획득하고 자원을 사용할 수 있습니다.

락의 종류

  • 뮤텍스(Mutex, Mutual Exclusion):
    • 단일 스레드가 자원을 독점적으로 사용하기 위해 사용됩니다. 한 번에 하나의 스레드만 락을 획득할 수 있습니다.
  • 세마포어(Semaphore):
    • 정해진 수의 스레드가 자원에 접근할 수 있도록 허용합니다. 예를 들어, 세마포어 값이 3이면 최대 3개의 스레드가 동시에 자원에 접근할 수 있습니다.
  • 리드/라이트 락(Read/Write Lock):
    • 읽기 작업은 여러 스레드가 동시에 수행할 수 있지만, 쓰기 작업은 오직 하나의 스레드만 수행할 수 있도록 제어합니다. 이는 읽기-쓰기가 많은 시스템에서 유용합니다.