我正在开发一个(C ++)程序,在执行查询期间可能会使用多个线程,其中一些线程将依赖于自己启动的其他线程或此查询过程中的另一个线程。确定特定线程是否存在取决于传递给线程的特定参数,这是活动线程列表中的线程数据的一部分。单个线程可能很快完成,而其他线程可能需要很长时间。
为了防止尝试重新发明轮子,是否有一些算法,模式或最佳实践来处理编组和等待多个相互依赖的线程?
答案 0 :(得分:1)
您可能希望查看期货和承诺,以及C ++ 11中的异步包装器界面。
Promises允许您提供结果。
期货允许您等待结果。
通过这种方式,您可以在线程之间表达大量的计算依赖关系,并且由于每个使用者都为其生产者(可能本身就是消费者)正确等待很多情况,因此依赖关系会自动地自行解决,如果你照顾。
更多信息:
一个question about futures & promises
非常good explanation
关于"broken promises"( - Bartosz Milewski)的博客文章