직관적인느낌

std::mutex 와 lock/unlock 본문

공학

std::mutex 와 lock/unlock

범슐랭 2024. 1. 9. 07:17
728x90
반응형

"std::mutex"는 C++ 표준 라이브러리의 일부로서, 
동시에 여러 스레드가 공유 자원에 접근하는 것을 방지하는 데 사용되는 동기화 프리미티브입니다. 


여러 스레드가 공유 자원에 동시에 접근하려고 하면 데이터 경쟁 상황이 발생할 수 있으며, 
이는 데이터의 일관성을 해칠 수 있습니다. "


std::mutex"는 이러한 상황을 방지하기 위해 사용됩니다.

  1. 공유 자원에 접근하기 전에 뮤텍스를 잠급니다(lock).
  2. 공유 자원을 안전하게 사용합니다.
  3. 공유 자원의 사용이 끝나면 뮤텍스를 해제합니다(unlock).

"std::mutex"의 주요 메서드에는 "lock"과 "unlock"이 있습니다.

  • lock():
    이 메서드는 뮤텍스를 잠그는데 사용됩니다.
    뮤텍스가 이미 잠겨 있으면, 호출 스레드는 뮤텍스가 해제될 때까지 블록됩니다.
    뮤텍스가 해제되면, 호출 스레드는 뮤텍스를 잠그고 진행합니다.

  • unlock(): 
    이 메서드는 뮤텍스를 해제하는데 사용됩니다. 
    뮤텍스를 해제하면, 뮤텍스에 대해 블록된 다른 스레드 중 하나가 뮤텍스를 잠글 수 있게 됩니다.

또한, "std::lock_guard"와 "std::unique_lock"과 같은 RAII(Resource Acquisition Is Initialization) 객체를 사용하여 뮤텍스를 자동으로 잠그고 해제할 수 있습니다. 

이는 뮤텍스를 직접 관리해야 하는 부담을 줄여주며, 예외 안전성을 향상시킵니다. 

이러한 객체는 생성될 때 뮤텍스를 잠그고, 파괴될 때 뮤텍스를 해제합니다.

728x90
반응형