C++11/std::condition_variable – 生产者消费者模型
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:C++11/std::condition_variable – 生产者消费者模型
原文链接:https://www.stubbornhuang.com/779/
发布于:2020年04月01日 17:44:25
修改于:2020年04月01日 17:46:06

代码示例:
#include <iostream>
#include <thread>
#include <chrono>
#include <mutex>
#include <deque>
#include <condition_variable>
std::deque<int> global_deque;
std::mutex global_mutex;
std::condition_variable global_ConditionVar;
// 生产者线程
void Producer()
{
while (true)
{
// 休眠5毫秒
std::this_thread::sleep_for(std::chrono::milliseconds(5));
std::unique_lock<std::mutex> lock(global_mutex);
global_deque.push_front(1);
std::cout << "生产者生产了数据" << std::endl;
global_ConditionVar.notify_all();
}
}
// 消费者线程
void Consumer()
{
while (true)
{
std::unique_lock<std::mutex> lock(global_mutex);
// 当队列为空时返回false,则一直阻塞在这一行
global_ConditionVar.wait(lock, [] {return !global_deque.empty(); });
global_deque.pop_back();
std::cout << "消费者消费了数据" << std::endl;
global_ConditionVar.notify_all();
}
}
int main()
{
std::thread consumer_Thread(Consumer);
//std::thread consumer_Thread1(Consumer);
std::thread producer_Thread(Producer);
consumer_Thread.join();
//consumer_Thread1.join();
producer_Thread.join();
getchar();
return 0;
}
当前分类随机文章推荐
- C++ – 字节数组byte[]或者unsigned char[]与float的相互转换 阅读408次,点赞0次
- C++11/std::thread - 可作为线程函数的几种方式总结 阅读2656次,点赞1次
- C++ - 使用正则判断字符串是否全是中文 阅读507次,点赞0次
- C++11 - 快速学会正则表达式 阅读616次,点赞2次
- C++11 - 使用std::thread,std::shared_future,std::promise并行化/多线程化for循环,提升处理速度 阅读722次,点赞0次
- C++ Map中存储动态指针时正确释放内存 阅读2752次,点赞0次
- C++ - vector存储动态指针时正确释放内存 阅读4213次,点赞0次
- C++ - Jni中的GetByteArrayElements和GetByteArrayRegion的区别和使用示例 阅读603次,点赞0次
- C++ 11 - final关键字简要介绍 阅读1366次,点赞0次
- GCC/GG++中编译优化选项-O -O0 -O1 -O2 -O3 -Os -Ofast -Og -Oz各自的区别和作用 阅读396次,点赞0次
全站随机文章推荐
- 资源分享 - 白话大数据与机器学习(高扬著)PDF下载 阅读1889次,点赞0次
- 资源分享 - 精通Python网络爬虫 核心技术、框架与项目实战 ,韦玮著 高清PDF下载 阅读1324次,点赞0次
- FFmpeg - FFmpeg历史版本下载和函数弃用列表 阅读251次,点赞0次
- 资源分享 - Essential Mathematics for Games and Interactive Applications(First Edition) 英文高清PDF下载 阅读1154次,点赞0次
- 盗墓笔记到底讲了什么故事???-带你领会终极和它 阅读3045次,点赞1次
- 资源分享 - Ray Tracing - A Tool for All 英文高清PDF下载 阅读1009次,点赞0次
- TensorRT - 扩展TensorRT C++API的模型输入维度,增加Dims5,Dims6,Dims7,Dims8 阅读942次,点赞0次
- 书籍翻译 – Fundamentals of Computer Graphics, Fourth Edition,第5章 Linear Algebra中文翻译 阅读630次,点赞2次
- WordPress - 升级WordPress5.8后切换回旧版的小工具管理页面 阅读983次,点赞0次
- 资源分享 - Digital Character Development - Theory and Practice , Second Edition 英文高清PDF下载 阅读755次,点赞0次
评论
149