生产者——消费者问题(producer-consumer),又名:有界缓冲区(bounded-buffer)问题
多生产者——多消费者
设计要点:
当缓冲区满已满,而此时生产者还想向缓冲区中放入一个新的数据项时。则让生产者睡眠,待消费者从缓冲区中取出一个或多个数据项时再唤醒生产者。
同时,多个生产者,则需要多添加一个条件变量和计数变量,用来保证多个生产者之间对消息队列的互斥访问
当缓冲区满已空,而此时消费者还想从缓冲区中取出一个新的数据项时。则让消费者睡眠,待生产者向缓冲区中放入一个或多个数据项时再唤醒消费者。
同时,多个消费者,则需要多添加一个条件变量和计数变量,用来保证多个消费者之间对消息队列的互斥访问
代码实现如下:(IDE : VS2017)
#include"stdafx.h"
#include<string>
#include<stdio.h>
#include <windows.h>//Sleep()函数需要包含的头文件
#include <stdlib.h>
#include<thread>
#include <mutex>
#include<iostream>
using namespa