모두의 코드 커뮤니티

C++ condition_variable 강의 관련 질문 드립니다

먼저 c++ 강의 굉장히 잘 읽고 있습니다. 감사합니다.

현재 condition_variable 부분을 보고 있습니다. (씹어먹는 C ++ - <15 - 2. C++ 뮤텍스(mutex) 와 조건 변수(condition variable)>)
producer-consumer 패턴에서 condition_variable을 이용하는 부분을 보고 있습니다.

아래와 같은 상황이 일어날 수 있나요?
=> consumer 1이 cv->wait(lk, [&] { return !downloaded_pages->empty() || *num_processed == 25; }); 에서 sleep 중이고, producer가 downloaded_pages->push(content); 하여 m->unlock();을 하였습니다. 이 때, consumer 2가 std::unique_lockstd::mutex lk(*m); 를 통과하여 cv->wait로 넘어와 조건 검사를 통과한 후, producer가 cv->notify_one();를 하여 consumer2 역시 unsleep로 되어서 조건검사를 통과할 수 있지 않나요?. 즉, 두 consumer가 동시에 통과할 수는 없나요?

읽어주셔서 감사합니다.

cv->wait도 lock기능이 있으므로 다른 쪽이 lock을 점유한 상황에서는 cv->notify_one();가 씹히는군요… 이것저것 찾다 보니 알게 되었습니다. 해당 내용에 관해 의문이 풀렸습니다.