C++ 11新特性之用多线程实现生产者消费者问题

本文探讨了生产者消费者问题的典型应用场景,如多媒体pipeline和图像处理中的Pipeline管理,并详细阐述如何利用C++11的线程库来实现这一多线程模型,提供了一种跨操作系统平台的解决方案。
摘要由CSDN通过智能技术生成

生产者消费者问题是一个典型的多线程问题。本文主要讨论

1.    生产者消费者使用场景

2.    怎么用C++11的线程来实现生产者消费者

 

生产者消费者使用场景

1.    多媒体的pipeline

比如在Android中,Camera是一个生产者,Video是一个消费者。它们之间通过BufferQueue来进行buffer传递。BufferQueue底层是通过binder来实现跨进程调用。

2.    图像处理中实现Pipeline管理

在图像处理中,对图像的处理是分成多个阶段的,每个阶段都是消费者和生产者。从上一阶段接收数据,处理,交给下个阶段进行进一步的处理。

1.    怎么用C++11的线程来实现生产者消费者

怎么用C++11的线程来实现生产者消费者

在C++11之前,没有标准的线程库,一般都是自己对pthread进行封装,或者用开源的比如,boost, Android AOSP utils.

有了C++11的标准线程库,我们就很容易的实现一个在不同OS之间方便移植的生产者消费者模型。

下面是参考程序,在ubuntu 16.04下面编译: g++ -std=c++11 -pthread a.cpp


a.cpp:

#include <queue>
#include <condition_variable>
#include <mutex>
#include <thread>
#include <iostream>
#include <unistd.h>

usin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值