C++实现生产者与消费者模式

这个博客展示了如何用C++实现生产者-消费者模式。代码中定义了一个结构体`Cam_image`用于存储数据,并使用`std::map`和`std::vector`作为数据容器,利用`std::mutex`和`std::condition_variable`实现线程间的同步。博客通过`PushDataIntoCommunicateQueue`和`GetDataFromCommunicateQueue`函数分别实现数据的生产和消费,同时支持不同优先级的数据处理。
摘要由CSDN通过智能技术生成

代码:

#include <iostream>

#include <mutex>

#include <condition_variable>

#include <queue>

#include <list>

#include<map>

#include<string.h>

using namespace std;

#include <thread>

/*

生产者-单消费者

*/

typedef struct stc_Cam_image

{

int32_t priority; //优先级属性

// int64_t u64InTime; //进入队列时间(us)

// int32_t nBuffLen; //数据长度

u_int32_t data; //数据缓存

double timestamp;

bool islongExepose;

} Cam_image;


 

typedef int PRIORITY; //0 is highest level

typedef std::vector<std::shared_ptr<Cam_image>> MSG_QUEUE; //存放数据的容器

static std::mutex mtx; //本队列使用的锁

static std::condition_variable cv; //本队列与锁对应的条件变

//数据优先级与Vector关联的MAP

static std::map<PRIORITY, MSG_QUEUE> PriorityQueue{

{0, std::vector<std::shared_ptr<Cam_image>>{}},

{1, std::vector<std::shared_ptr<Cam_image>>{}},

{2, std::vector<std::shared_ptr<Cam_image>>{}},

{3, std::vector<std::shared_ptr<Cam_image>>{}},

{4, std::vector<std::shared_ptr<Cam_image&g

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值