0

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

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

4

1 回答 1

1

您可能想看看期货和承诺,以及 C++11 中的异步包装器接口。

Promise 允许你交付结果。

期货允许您等待结果。

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

更多信息:关于期货和承诺
的问题 一个很好的解释 关于“破碎的承诺”的博客条目(- Bartosz Milewski)


于 2013-10-08T10:20:18.033 回答