LINUX系统编程:基于环形队列和信号量的生产者消费者模型

目录

1.环形队列

2.加上信号量的理解

3.代码


1.环形队列

环形队列使用vector封装出来的。

环形队列可以实现并发生产和消费,就是在消费的同时也可以生产。

这个是建立在生产者消费者位置不重合的情况下。

因为位置重合之后,环形队列为空或者满,

为空的时,只能让生产者先生产,消费者后消费,

为满时,消费者先消费,生产者后生产。

如何实现环形的效果

当下标遍历到vector末尾的时候, 下标 %=判断环形队列为空还是为满 vector容量,下标就回到数组的开始。

当生产者消费者重合时

1.队列为空(访问环形队列,让生产者先生产)

2.队列为满(访问环形队列,让消费者先消费)

当生产者与消费者不重合时

队列一定不为空&&不为满,这个时候生产者可以生产,消费者可以消费。

2.加上信号量的理解

生产者只关心环形队列有没有空间让他生产

消费者只关心环形队列有没有数据让他消费

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值