std::condition_variable的步骤如下:
1.创建一个 std::condition_variable 对象。
2.创建一个互斥锁std::mutex对象,用来保护共享资源的访问。
3.在需要等待条件变量的地方使用std::unique_lock
4.在其他线程中需要通知等待的线程时,调用std::condition_variable::notify_on e()或std::condition_variable::notify_al1()函数通知等待的线程。
- #include
- #include
- #include
- #include
- #include
-
-
- int shared_data = 0;
- std::mutex mtx;
- std::queue<int>q_queue;
- std::condition_variable q_cv;
-
- void Productor(){
- for(i=0;i<10;i++)
- {
- std::unique_lock
lock(mtx); - q_queue.push(i);
- //通知消费者来取
- g_cv.notify_one()
- std:;cout<<"Productor:"<
- }
- std::thid_thread::sleep_for(std::chrono::microseconds(100));
-
- }
-
- void Consumer(){
- //如果队列为空,等待
- while(1)
- {
- std::queue_lock
lock(mtx); - bool isempty = q_queue.empty();
- q_cv.wait(lock,[](){return !q_queue.empty();
- });
- int value = q_queue.front();
- q_queue.pop();
- std:;cout<<"Consumer:"<
- }
- }
-
- int main()
- {
- std::thread t1(Productor);
- std::thread t2(Productor);
-
- t1.join();
- t2.join();
-
- std::cout<< " " <
- return 0;
- }
-
相关阅读:
程序员面试中的测试驱动开发:如何展示你的编程范式
SLAM从入门到精通(3d 点云数据访问)
CodeForces Round #821 (div.2) A~C
Python和Excel的完美结合:常用操作汇总(案例详析)
Docker镜像使用教程
STM32进行LVGL裸机移植
[附源码]Python计算机毕业设计Django抗疫医疗用品销售平台
学习鱼眼相机的总结
前端-(3)
HTML5期末大作业:美妆网页主题网站设计——清新的手工肥皂网站展示(4页)HTML+CSS+JavaScript
-
原文地址:https://blog.csdn.net/weixin_44651073/article/details/136518624