网站建设捌金手指花总十四,wcm 可以做网站吗,泉州网站建设网站制作,我国网站开发C笔记之条件变量#xff08;Condition Variable#xff09;与cv.wait 和 cv.wait_for的使用
参考博客#xff1a;C笔记之各种sleep方法总结
code review! 文章目录 C笔记之条件变量#xff08;Condition Variable#xff09;与cv.wait 和 cv.wait_for的使用1.条件变量笔记之条件变量Condition Variable与cv.wait 和 cv.wait_for的使用
参考博客C笔记之各种sleep方法总结
code review! 文章目录 C笔记之条件变量Condition Variable与cv.wait 和 cv.wait_for的使用1.条件变量Condition Variable2.cv.wait_for3.cv.wait4.cv.wait和cv.wait_for比较 1.条件变量Condition Variable 2.cv.wait_for 代码
#include iostream
#include thread
#include mutex
#include condition_variablestd::mutex mtx;
std::condition_variable cv;
bool condition false;void waitForCondition() {std::unique_lockstd::mutex lock(mtx);// 等待一段时间或直到条件满足if (cv.wait_for(lock, std::chrono::seconds(3), []{ return condition; })) {std::cout Condition is satisfied! std::endl;} else {std::cout Timed out waiting for condition. std::endl;}
}void notifyCondition() {std::this_thread::sleep_for(std::chrono::seconds(2)); // 模拟一些操作{std::lock_guardstd::mutex lock(mtx);condition true;}cv.notify_one(); // 通知一个等待的线程
}int main() {std::thread t1(waitForCondition);std::thread t2(notifyCondition);t1.join();t2.join();return 0;
}3.cv.wait 代码
#include iostream
#include thread
#include mutex
#include condition_variablestd::mutex mtx;
std::condition_variable cv;
bool condition false;void waitForCondition() {std::unique_lockstd::mutex lock(mtx);cv.wait(lock, []{ return condition; }); // 等待条件满足std::cout Condition is satisfied! std::endl;
}void notifyCondition() {std::this_thread::sleep_for(std::chrono::seconds(2)); // 模拟一些操作{std::lock_guardstd::mutex lock(mtx);condition true;}cv.notify_one(); // 通知一个等待的线程
}int main() {std::thread t1(waitForCondition);std::thread t2(notifyCondition);t1.join();t2.join();return 0;
}4.cv.wait和cv.wait_for比较