gpt4 book ai didi

c++ - 如何在 C++ 中同步和组合来自多个线程的结果?

转载 作者:行者123 更新时间:2023-11-30 01:00:57 25 4
gpt4 key购买 nike

我有一个数据源不断地输入数据包。有 5 个线程(A、B、C、D、E)处理数据包。请注意,5 个线程具有完全不同的速度,并且它们为每个传入数据包生成 5 个不同的特征(每个线程生成 1 个特征)。

5 个线程的速度不同:当 A 分析完前 10 个包时,B 可能只完成了包 1、包 2,而 C 可能甚至一个包都没有完成。

我的任务是匹配 5 个线程的结果,并在前 10 个数据包的 5 个特征都可用时开始最终分析。

我的问题是: - 如何组合来自不同线程的结果以确保分析线程仅在一定数量的结果可用时被触发? - 我似乎需要一个聚合器线程来检查不同缓冲区的可用性。我在考虑锁/条件。我如何实现这种涉及不同缓冲区的条件?

完全是多线程的新手。欢迎任何建议。

我正在使用带有 Boost 库的 GNU C++。

最佳答案

拥有一个“聚合器”线程:该线程将从工作线程获取输入(我建议通过非阻塞线程安全队列),一旦“批处理”准备就绪,将其推送到您的“分析器”线程.

队列提供​​了不阻塞任何工作人员的优势:“聚合器”只需轮询工作人员队列(通过条件部分)。您可以根据自己的喜好控制轮询率。

这个解决方案解决了“同步所有”情况的问题。

关于c++ - 如何在 C++ 中同步和组合来自多个线程的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1674864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com