c++ - 编码和等待多个相互依赖的线程的算法、模式或最佳实践?

标签 c++ multithreading algorithm design-patterns

我正在开发一个 (C++) 程序,该程序在执行查询期间可能会使用多个线程,其中一些线程将依赖于由其自身启动的其他线程或此查询进程中的另一个线程。确定特定线程是否存在取决于传递给线程的特定参数,这是事件线程列表中线程数据的一部分。个别线程可能会很快完成,而其他线程可能需要很长时间。

为防止重新发明轮子,是否有一些算法、模式或最佳实践来处理编码和等待多个相互依赖的线程?

最佳答案

您可能想看看 Futures 和 Promises,以及 C++11 中的异步包装器接口(interface)。

promise 让您交付结果。

future 允许您等待结果。

通过这种方式,您可以表达线程之间的大量计算依赖关系,并且由于每个消费者都会正确等待其生产者(他们自己可能再次成为消费者),因此在很多情况下,依赖关系会自动解决,如果你保重。

更多信息:
question about futures & promises
一个很good explanation
关于 "broken promises" 的博客条目(- 巴托什·米莱夫斯基)

关于c++ - 编码和等待多个相互依赖的线程的算法、模式或最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19243943/

相关文章:

c++ - 制定列出所有可能序列的算法

c++ - bar(type(&)[x])定义与bar(type(&)[x])声明不匹配?

c++ - 尝试读取和写入字符串时发生访问冲突?

Java并发异常

ios - EAGLContext PresentRenderbuffer 导致死锁

algorithm - 如何使用回溯法求解 M<N 时的 M 个皇后

string - 什么更好地在运行时生成随机 ID 或之前将它们放在手边?

c# - 将开发从 Windows 转移到 Linux

c++ - 为什么我的线程被一个没有被任何东西占用的关键部分阻塞?

Java ScheduledExecutorService - 需要有关实时性能问题的建议