固定缓冲区大小的生产者消费者模型
在MSVC2019版本下,x64 release模式下,有几率在生产者生产完数据后卡死,经过VS2019性能检测工具,发现在consumer函数中不断进行两个判断,具体问题还不知道。
// 生产者消费者模型
// 一个线程向队列中写数据, 另一个线程从队列中取数据
#include <thread>
#include <mutex>
#include <iostream>
#include <deque>
#include <chrono>
// 全局队列
std::deque<int> q;
// 全局锁
std::mutex mtx;
// 读写数字个数
int digit_num;
// 生产者, 向队列中写入10个数字
void producer() {
//std::cout << "生产者线程开始" << std::endl;
for (int i = 0; i < digit_num; ++i) {
mtx.lock();
q.push_back(i);
std::cout << "生产者生产" << i << std::endl;
mtx.unlock();
}
std::cout