c++ - 更快的生产者 关键时刻缓慢的消费者

标签 c++ c multithreading stl producer-consumer

我与生产者和消费者之间存在问题。

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

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

最佳答案

您无法在不丢失信息的情况下阻止生产者捕获数据,因此您只能进行通信。生产者或消费者或两者都需要缓冲,以便可以全速捕获到达的数据,然后以消费者可以跟上的速率传送到消费者的数据处理。

根据您正在做的事情,当后来的事件使其过时时,丢失一些中间状态实际上可能没问题。

关于c++ - 更快的生产者 关键时刻缓慢的消费者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21513192/

相关文章:

c++ - 如何访问和存储 vector 类型的结构成员?

c - 如何使用strspn查找strspn的arg 2中提到的字符数以外的字符数?

c# - 静态变量的线程安全初始化

java - 在 SwingWorker (doInBackground) 中从 Worker-Thread 调用多个方法?

c++ - 返回时调用函数的方法

c++ - 如何避免递归函数的堆栈溢出?

c++ - 我无法在数字后扫描字符

c - 将 `ifdef` 放在源文件的第一行有什么意义?

c - 分而治之算法的结果随机变为零

c# - 在 .NET 4.0 中将任务与 Parallel.Foreach 结合使用