세마포어 & 뮤텍스



세마포어 (Semaphore)

semaphore

  • 공유된 자원의 데이터를 여러 프로세스가 접근하는 것을 막는 것
  • 연산

    • P(Produce): 세마포어 값을 감소시키는 연산. 만약 세마포어 값이 0보다 작으면 대기
    • V(Release): 세마포어 값을 증가시키는 연산. 다른 스레드가 대기 중이면 하나의 스레드를 깨움
  • 일반적으로 양의 정수 값을 가지며, 이 값을 “카운터” 로 활용
  • 일반적으로 비교적 긴 시간을 확보하는 리소스에 대해 이용
  • 프로세스 간 통신(IPC)에 사용되거나 공유 자원에 대한 제한된 엑세스를 관리하는 데 유용



뮤텍스 (Mutex)

mutex

  • 공유 리소스에 대한 동시 액세스를 허용하지 않는 동기화 도구
  • 임계 영역을 가진 쓰레드들의 Running Time이 서로 겹치지 않게 각각 단독으로 실행하게 하는 기술
  • 다중 프로세스들의 공유 리소스에 대한 접근을 조율하기 위해 locking과 unlocking 사용
  • 뮤텍스를 확보하려는 스레드는 뮤텍스가 잠겨 있지 않을 때만 진행 가능. 다른 스레드가 뮤텍스를 이미 확보한 경우 대기
  • 뮤텍스 객체를 두 스레드가 동시에 이용할 수 없음




references
👉 https://tibetsandfox.tistory.com/45