生产者消费者算法是经典的进程同步算法,下面就是运用C++模拟实现生产者消费者算法,能实现对缓冲池的互斥访问和生产者进程与消费者进程之间的同步。
实现思路:用C++写一个生产者和消费者类,在里面有一个构造函数,初始化指向产品的指针,产品数和互斥信号量mutex(互斥访问count),接下来就写了生产者和消费者算法,这里要注意的是:缓冲区满时不能生产,缓冲区空时不能消费,这里我都在运行中有提示。主函数中就是循环调用生产者消费者,然后每次调用后输出缓冲区的产品状态和数量。
源代码:
#include
#include
#include
#define N 100 //产品数量
using namespace std;
/*生产者消费者类*/
class PandC{
private:
int in,out;//指向有产品的下标
int count;//缓冲区的产品数
int buffer[N];//缓冲区
int mutex;//互斥信号量
int empty,full;//判断缓冲区是否为空或者满
public:
/*初始化,构造生产者消费者*/
PandC(){
in=0;out=0;count=0;
empty=N;full=0;mutex=1;
for(int i=0;i |