最新活动:电脑PC端+手机端+微网站+自适应网页多模板选择-建站388元起价!!!
当前位置:主页 > 网站建设 > C++实现一个简单的生产者-消费者队列建站知识

C++实现一个简单的生产者-消费者队列建站知识

时间:2023-05-25 09:05:25 阅读: 文章分类: 网站建设 作者: 网站编辑员

导读:建站知识建站知识本文的代码都是ChatGPT生成,我只是做了微小的调整和整合,AI提示词如下: 设计一个C++类,支持生产者-消费者模型,可以通过size函数获取剩余数量 可能seo网站优化个业网站建设公司。

seo网站优化个业网站建设公司本文的代码都是ChatGPT生成,我只是做了微小的调整和整合,AI提示词如下: 设计一个C++类,支持生产者-消费者模型,可以通过size函数获取剩余数量 可能第一次生成的不一定合适,多刷新几次。 生成的 ProducerConsumerQueue.h 代码如下: #ifndef PRODUCER_CONSUMER_QUEUE_H#define PRODUCER_CONSUMER_QUEUE_H#include queue#include mutex#include condition_variablet […]

本文的代码都是ChatGPT生成,我只是做了微小的调整和整合,AI提示词如下:

设计一个C++类,支持生产者-消费者模型,可以通过size函数获取剩余数量

可能第一次生成的不一定合适,多刷新几次。 生成的ProducerConsumerQueue.h代码如下:

#ifndef PRODUCER_CONSUMER_QUEUE_H #define PRODUCER_CONSUMER_QUEUE_H #include <queue> #include <mutex> #include <condition_variable> template<typename T> class ProducerConsumerQueue { public: ProducerConsumerQueue(int size) : m_maxSize(size), m_curSize(0) {} void push(T& val) { std::unique_lock<std::mutex> lock(m_mutex); wh网站seo优化诊断工具ile (m_curSize >= m_maxSize) { m_notFull.wait(lock); } m_queue.push(val); ++m_curSize; m_notEmpty.notify_one(); } T pop() { std::unique_lock<std::mutex> lock(m_mutex); while (m_curSize <= 0) { m_notEmpty.wait(lock); } T val = m_queue.front(); m_queue.pop(); --m_curSize; m_notFull.notify_one(); return val; } int size() { std::unique_lock<std::mutex> lock(m_mutex); r公司网站建设eturn m_curSize; } private: std::queue<T> m_queue; int m_maxSize; int m_curSize; std::mutex m_mutex; std::condition_variable m_notEmpty; std::condition_variable m_notFu网站建设制作ll; }; #endif //PRODUCER_CONSUMER_QUEUE_H

在上面的代码中,我们定义了一个ProducerConsumerQueue类:

  • ProducerConsumerQueue类有最大容量和当前容量两个属性,使用std::queue<int>存储数据,使用std::mutex保证线程安全,使用std::condition_variable实现线程同步。
  • 在push函数中,如果当前容量已满,等待消费者消费;否则插入数据,当前容量加1,通知消费者。
  • 在pop函数中,如果当前容量为0,等待生产者生产;否则取出数据,当前容量减1,通知生产者。
  • 在size函数中,使用std::unique_lockstd::mutex保证线程安全,获取当前容量并返回。

测试示例代码如下:

关键词标签: 生产者 队列

声明: 本文由我的SEOUC技术文章主页发布于:2023-05-25 ,文章C++实现一个简单的生产者-消费者队列建站知识主要讲述生产者,队列,C++实现一个简单的生产者-消费者队网站建设源码以及服务器配置搭建相关技术文章。转载请保留链接: https://www.seouc.com/article/web_7716.html

我的IDC 网站建设技术SEOUC.COM
专注网站建设,SEO优化,小程序设计制作搭建开发定制网站等,数千家网站定制开发案例,网站推广技术服务。
  • 5000+合作客服
  • 8年从业经验
  • 150+覆盖行业
  • 最新热门源码技术文章