생산자-소비자
-
condition_variable::wait개발/C·C++ 2021. 7. 26. 01:19
condition_variable는 생산자-소비자 모델에 쓰이는 클래스입니다. 멤버 함수인 wait 함수는 첫 번째 인자로 unique_lock을 받습니다. condition_variable 클래스는 오직 std::unique_lock을 통해서만 작동합니다. 이러한 제한은 일부 플랫폼에서 최대 효율을 만들 수 있습니다. 두 번째 인자는 predicate을 넣어주는데, 특정 조건을 만족하기 전까지 해당 스레드는 블록되며 원자적으로 언락됩니다. 블록된 스레드는 notifiy_all()이나 notify_one()이 실행될 때 블록이 풀리는데, 때로는 그냥 풀릴 수도 있습니다(spuriously). 블록이 풀리면, 락이 다시 획득되고 대기가 끝납니다. 예제 코드 #include #include #include ..