麻烦理解这个增强条件变量的例子

时间:2014-04-14 03:07:10

标签: c++ multithreading boost condition-variable

在以下示例中:http://en.cppreference.com/w/cpp/thread/condition_variable 什么阻止main()线程在worker_thread到达cv.wait()之前调用cv.notify_one()?在我看来,如果main()线程提前通知,worker_thread可以永远等待。

我希望在“cv.wait()”附近看到“while(!ready)”。

1 个答案:

答案 0 :(得分:2)

您不需要使用C ++ 11的包装器循环,因为它已由wait的实现提供:

http://en.cppreference.com/w/cpp/thread/condition_variable/wait

也就是说,如果lambda表达式(此位为wait)的计算结果为[]{return ready;}true将立即返回。