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

建筑涂料网站设计网站后台管理维护 不懂编程

建筑涂料网站设计,网站后台管理维护 不懂编程,angularjs做网站,没有网站怎么做推广生产者-消费者模型是一种典型的多线程并发模式,常用于在一个共享缓冲区中协调生产者和消费者之间的数据传递。在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/405694/

相关文章:

  • 上海怎么制作网站广西住房建设部网站
  • 乐清市住房和城乡规划建设局网站com域名为什么那么贵
  • 单页网站网址讨债女企业家中标公司被强执
  • 惠州建设银行网站网站h标签
  • wordpress 5.0.2企业站主题用网站做成软件
  • 从事网站开发方向南宁网站建设公司哪个好
  • 天津品牌网站建设公司排名国际网页浏览器
  • 做的好的有哪些网站有没有做网站
  • 做购物网站怎么写开题报告开放平台模式
  • 网络 企业网站域名注册查询工具
  • 房地产门户网站宽带费用多少钱一年
  • vps服务器购买网站百度做网站的联系人
  • 发新闻稿做新闻源对网站有啥帮助网站怎么做第三方支付接口
  • wordpress企业站主题下载地址七里香社区在线看
  • 个人怎样建立网站字体在线设计网站
  • 自己电脑做网站访问速度做网站高校视频
  • 51CTO学院个人网站开发视频深圳软件公司名录
  • 网站开发设计师薪资涿州住房和城乡建设局网站
  • 做外贸需要关注的网站有什么问题北京英文网站建设的原则
  • 网站建设实训报告要求互联网公司排名类比
  • 沧州网站建设专业定制wordpress怎么集成码支付宝
  • html网站首页网络设计基本原则
  • seo与网站优化高校教学网站建设
  • 烟台住房和城乡建设局网站辽宁移动惠生活app官方版
  • 网站建设完成后 下一步做什么hao123主页下载安装
  • 广州微信网站制作外国设计网站推荐
  • 简单网站建设教学视频长沙网站建设 个人
  • 网站开发三端指哪三端扬中网站建设好么
  • 郑州网站建站网站怎么样做企业商城网站要多少钱
  • 网站 业务范围做网站的时候遇到的问题