std::condition_variable 必须与 std::unique_lock 一起使用,需要在持有 mutex 的情况下调用 wait() 函数,以确保在线程等待条件时互斥访问共享资源,从而避免竞态条件(Race Condition)。共享资源包括等待的条件,以及线程等待队列。 注意虚假唤醒和唤醒丢失
std::condition_variable cv; std::mutex cv_m; inti = 0; booldone =false; voidwaits() { std::unique_lock<std::mutex> lk(cv_m); std::cout <<"Waiting... \n"; cv.wait(lk, []{returni == 1;}); std::cout <<"...finished waiting. i == 1\n"; done =true; } voidsignals...
代码回廊 关注博客注册登录 阅读771发布于2023-10-27 Totn 10声望5粉丝 幼稚也没关系,去实践,去经历,去思考! « 上一篇 C++笔记: 运算符重载 下一篇 » C++练手:写一个简单的线程池 引用和评论