我对制作人和消费者有疑问。
我有一个生产者可以非常快速地生成数据,它从外部服务器获取具有特定时期的数据。我有三个消费者需要这些数据。消费者对这些数据进行了一些处理,因此消费者比生产者慢。
我使用队列传递数据,在特定大小之后,我使用互斥锁和条件变量阻止生产者和消费者。但是当conditional_variable等待时,来自服务器的数据将被更新,当我等待时,我会错过一些数据。如何避免这种情况?
答案 0 :(得分:0)
您不能在不丢失信息的情况下阻止生产者捕获数据,因此您可以握手的就是通信。生产者或消费者或两者都需要缓冲,因此可以全速捕获到达的数据,然后以可以跟上的速率传递给消费者的数据处理。
根据你正在做的事情,当后来的事件让它过时时,失去一些中间状态实际上可能会很好。