操作系统 记录型信号量实现生产者消费者问题(完整代码)

问题描述 

用信号量模拟生产者-消费者问题的过程。生产者和消费者两个线程共享同一个缓冲区,生产者不断向缓冲区中添加产品,消费者从缓冲区中消费产品。要保证缓冲区满了之后生产者不能再继续添加产品,需要等消费者至少消费一个产品之后生产者才能继续生产产品;缓冲区空了之后消费者不能再消费产品,需要等生产者至少生产一个产品之后消费者才能继续消费产品。

向缓冲区中添加产品和从缓冲区消费产品需要互斥操作保持同步。

生产者需要等待缓冲区有空间才能生产产品;消费者也不能在缓冲区为空时消费产品。这两个过程需要信号量来通知进行。

设置三个信号量

Mutex信号量实现生产者和消费之间的间接相互制约关系,资源共享,在某一时刻只能有一个享用资源。

Full、Empty信号量实现生产者和消费者之间的直接相互制约关系,进程合作。Empty为生产者的约束,缓冲区满使生产者不能操作。Full为消费者的制约,缓冲区空使消费者不能操作。

 完整代码

#include <iostream>
#include <fstream>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值