我与生产者和消费者之间存在问题。
我有一个生产者,它可以非常快地生成数据,并且它从外部服务器获取特定时期的数据。我有三个需要这些数据的消费者。消费者对这些数据进行一些处理,因此消费者比生产者慢。
我使用队列来传递数据,并且在达到特定大小后,我使用互斥锁和条件变量来阻止生产者和消费者。但是当条件变量等待时,来自服务器的数据将被更新,当我等待时我会丢失一些数据。如何避免这种情况?
最佳答案
您无法在不丢失信息的情况下阻止生产者捕获数据,因此您只能进行通信。生产者或消费者或两者都需要缓冲,以便可以全速捕获到达的数据,然后以消费者可以跟上的速率传送到消费者的数据处理。
根据您正在做的事情,当后来的事件使其过时时,丢失一些中间状态实际上可能没问题。
关于c++ - 更快的生产者 关键时刻缓慢的消费者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21513192/