更快的生产者在关键时刻减慢消费者

时间:2014-02-02 16:43:44

标签: c++ c multithreading stl producer-consumer

我对制作人和消费者有疑问。

我有一个生产者可以非常快速地生成数据,它从外部服务器获取具有特定时期的数据。我有三个消费者需要这些数据。消费者对这些数据进行了一些处理,因此消费者比生产者慢。

我使用队列传递数据,在特定大小之后,我使用互斥锁和条件变量阻止生产者和消费者。但是当conditional_variable等待时,来自服务器的数据将被更新,当我等待时,我会错过一些数据。如何避免这种情况?

1 个答案:

答案 0 :(得分:0)

您不能在不丢失信息的情况下阻止生产者捕获数据,因此您可以握手的就是通信。生产者或消费者或两者都需要缓冲,因此可以全速捕获到达的数据,然后以可以跟上的速率传递给消费者的数据处理。

根据你正在做的事情,当后来的事件让它过时时,失去一些中间状态实际上可能会很好。