经典软件设计模型 - 生产者消费者模型

简介

这里就不具体介绍了,网上一堆关于生产者消费者模式的介绍,这是一个常用的设计方法,只要牵扯多个线程之间协作一般就需要这个设计方法,简单意思就是有个缓冲负责两个线程之间的交流,一个线程往缓冲区写数据,一个线程从缓冲区读数据。


缓冲区类型

队列缓冲区:缓冲区一般是一个list,每次要写的数据都是新建一块内存,然后将这个内存指针压入队列,读缓冲区就是从队列尾读取,处理完后,将内存释放;这个方法显然存在大量的内存分配和释放,会造成大量CPU开销;

环形缓冲区:一般如果每次处理的数据大小固定,或者虽然大小不固定,但是肯定不会超过某个大小,就可以先分配一定数量的内存块,由于数量有限,所以当数据写到最后一块内存后,再重新回到第一块内存写入,这些内存就像首尾相连一样,类似一个环;

双缓冲区:感觉是环形缓冲区如果是两个缓冲区就是双缓冲区;


生产者和消费者协作

这里就是一个同步问题,环形缓冲区一般使用信号量同步,队列缓冲区可以使用信号量,也可以使用互斥锁,这个看具体应用;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值