当前位置:   article > 正文

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

c++ 多线程的生产者-消费者问题

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

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:

  1. #include <queue>
  2. #include <condition_variable>
  3. #include <mutex>
  4. #include <thread>
  5. #include <iostream>
  6. #include <unistd.h>
  7. usin
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号