2.3.1 生产者消费者模式

生产者消费者模式不是一种并行化概念或方案,而是一种可用于所有不同并行化方法的方法。一般来说,这种模式描述的是一个线程(生产者)提供一些数据,一个或多个线程(消费者)使用这些数据进行进一步处理。一个线程既可以是生产者,也可以是消费者,例如,在一个由多个生产者消费者进程组成的流水线中。生产者和消费者线程之间的通信是通过消息队列实现的。

图 2.13:利用生产者消费者模式增强响应速度。

请注意,处理时间并不总是相同的。因此,如果生产者线程获取图像,而消费者线程对图像进行处理,那么如果处理线程不能及时捕捉到图像,图像就可能丢失。必须对图像进行缓冲,并特别注意避免缓冲区溢出。如何做到这一点,例如流水线,将在 "流水线" 一节 进行演示。