当前位置: 首页 > news >正文

常用外贸网站网站建设网络公关

常用外贸网站,网站建设网络公关,网站开发备案认证,免费企业网站生产者-消费者模型是一种典型的多线程并发模式,常用于在一个共享缓冲区中协调生产者和消费者之间的数据传递。在C中,我们可以使用标准库中的线程、互斥量和条件变量来实现该模型。以下是一个简单的生产者-消费者模型的实现示例: #include &l…

生产者-消费者模型是一种典型的多线程并发模式,常用于在一个共享缓冲区中协调生产者和消费者之间的数据传递。在C++中,我们可以使用标准库中的线程、互斥量和条件变量来实现该模型。以下是一个简单的生产者-消费者模型的实现示例:

#include <iostream>
#include <thread>
#include <mutex>
#include <condition_variable>
#include <queue>
#include <vector>// 定义缓冲区容量
const int BUFFER_SIZE = 10;// 缓冲区
std::queue<int> buffer;// 互斥量和条件变量
std::mutex mtx;
std::condition_variable cv_producer, cv_consumer;// 生产者函数
void producer(int id, int num_items) {for (int i = 0; i < num_items; ++i) {std::unique_lock<std::mutex> lock(mtx);// 如果缓冲区满了,等待消费者消费cv_producer.wait(lock, [] { return buffer.size() < BUFFER_SIZE; });// 生产一个项目buffer.push(i);std::cout << "Producer " << id << " produced " << i << std::endl;// 通知消费者cv_consumer.notify_one();}
}// 消费者函数
void consumer(int id, int num_items) {for (int i = 0; i < num_items; ++i) {std::unique_lock<std::mutex> lock(mtx);// 如果缓冲区为空,等待生产者生产cv_consumer.wait(lock, [] { return !buffer.empty(); });// 消费一个项目int item = buffer.front();buffer.pop();std::cout << "Consumer " << id << " consumed " << item << std::endl;// 通知生产者cv_producer.notify_one();}
}int main() {const int num_producers = 3;const int num_consumers = 3;const int num_items = 20;// 创建生产者和消费者线程std::vector<std::thread> producers, consumers;for (int i = 0; i < num_producers; ++i) {producers.emplace_back(producer, i, num_items);}for (int i = 0; i < num_consumers; ++i) {consumers.emplace_back(consumer, i, num_items);}// 等待所有线程完成for (auto& p : producers) {p.join();}for (auto& c : consumers) {c.join();}return 0;
}

代码解析

  1. 缓冲区:使用std::queue<int>来模拟缓冲区。
  2. 互斥量和条件变量:使用std::mutex来保护缓冲区的访问权,使用两个std::condition_variable来协调生产者和消费者。
  3. 生产者函数:生产者在缓冲区未满时生产数据,并通知消费者。有一个循环生产指定数量的项目。
  4. 消费者函数:消费者在缓冲区非空时消费数据,并通知生产者。有一个循环消费指定数量的项目。
  5. 主函数:创建多个生产者和消费者线程,并等待它们完成。

这个示例展示了如何使用C++标准库中的线程、互斥量和条件变量来实现一个基本的生产者-消费者模型。可以根据具体需求调整缓冲区的容量、生产者和消费者的数量以及生产和消费的项目数量。

http://www.yayakq.cn/news/11160/

相关文章:

  • 友山建站优化网站建设创业计划书
  • 做淘客的网站有哪些重庆电子商务网站建设
  • 企业网站友好性分析wordpress无邮箱评论
  • 简单制作网站的过程小程序登录模板
  • 网站建设 个人wordpress搜索 文章内容
  • 做购物比价的网站有哪些医院门户网站建设规划
  • 创业做网站还是软件好自助建站工具软件
  • 免费笑话网站系统个人网站建设案例教程
  • 重庆怎么自己做网站2024年新闻时事热点论文
  • 中国未来巨型空间站视频网站 如何做seo
  • 关于校园网站建设的建议丹徒网站建设服务
  • 兴平网站开发网站备案字号
  • 网络公司+网站建设+小程序个人做公司网页怎么做
  • 医院系统网站建设seo优化策略
  • 找大学生做网站要多少钱展厅设计找哪家公司好
  • 专业网站建设公司首选上海网页制作公司 酒店
  • 上海松江区做网站的公司wordpress搭建外贸
  • 桥头镇网站建设网站的ns记录
  • 网站建设 点指成名福建省住房和城乡建设厅网站首页
  • 汕头市作风建设的网站网络运维周报
  • 重庆市建设工程安全网站wordpress提交页面反应迟钝
  • 搜索引擎优化至少包括哪几步襄阳网站排名优化
  • 找人做网站都需要提供什么一键生成ppt的软件
  • 网站修改域名服务器工程公司名字大全集
  • 品牌网站怎么做dedecms wap网站模板下载
  • 分析网站统计对网络营销的价值国外手表网站
  • 深圳建设网站公做中学数学教案有哪些好的网站
  • 哪家网站好网站界面设计的流程
  • H5网站开发工程师wordpress做的外贸网站6
  • 成都网站建设 外包wordpress修改页面样式