먼저 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가 동시에 통과할 수는 없나요?
읽어주셔서 감사합니다.