<aside> 🤩 博客地址:nicooo-wang.github.io
</aside>
生产者消费者模型是一个常见的设计模式,通常用于多线程或多进程环境下的任务协调和数据共享。
这种设计模式的主要目标是实现生产者和消费者之间的协调和同步,充分利用系统的线程资源,同时避免生产者在缓冲区已满时仍然继续生产,消费者在缓冲区为空时仍然继续消费。
生产者消费者模型广泛应用于各种场景,例如网站的请求的处理、安卓系统中UI界面的渲染(Buffer Queue)...它可以帮助实现任务的异步执行,提高系统的吞吐量和效率。通过生产者消费者模型,可以实现请求的协调和同步,增大系统的吞吐量和效率。
本项目的目的是通过实现一个单生产者单消费者Pipeline模板,采用面向对象进行设计,将Pipeline中的复杂操作进行封装。
项目地址:https://github.com/Nicooo-Wang/Pipeline-Queue
该项目分为3个子项目,逐步地完成一个C++面向对象地生产者消费者Pipeline项目实现
pipe-queue-func
分支thread-class
分支Producer-Consumer-Pipeline
分支请切换项目branch至
pipe-queue-func
查看代码
创建两个线程,一个Producer,一个Consumer,通过condition_variable
进行通信,完成一个生产者消费者流水线。
Consumer的限制:如果pipe中的buffer数量为0,则进入睡眠,等待Producer线程放入数据后唤醒。
Producer的线程:如果pipe中buffer的数量大于等于MAX_BUFFER_SIZE
,则进入睡眠,等待Consumer线程消耗buffer后唤醒;同时Producer生产work_times
个buffer后退出线程。