在以下示例中:http://en.cppreference.com/w/cpp/thread/condition_variable 什么阻止main()线程在worker_thread到达cv.wait()之前调用cv.notify_one()?在我看来,如果main()线程提前通知,worker_thread可以永远等待。
我希望在“cv.wait()”附近看到“while(!ready)”。
答案 0 :(得分:2)
您不需要使用C ++ 11的包装器循环,因为它已由wait
的实现提供:
http://en.cppreference.com/w/cpp/thread/condition_variable/wait
也就是说,如果lambda表达式(此位为wait
)的计算结果为[]{return ready;}
,true
将立即返回。