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;
- }
-
相关阅读:
Spring Boot 统一功能处理
Docker | 发布镜像到镜像仓库
SAP FI 项目号 系统状态CRTD是活动的 BS013
Android Studio 的初次使用
基于单片机的室内空气质量监控系统设计
基于深度优先搜索的图遍历
pom文件中引入本地jar包到maven项目
开发过程中那些包应该放到devDependencies,dependencies
198.打家劫舍,213.打家劫舍II,337.打家劫舍III
鸿鹄工程项目管理系统em Spring Cloud+Spring Boot+前后端分离构建工程项目管理系统
-
原文地址:https://blog.csdn.net/weixin_44651073/article/details/136518624