我正在开发一个 (C++) 程序,该程序在执行查询期间可能会使用多个线程,其中一些线程将依赖于由其自身启动的其他线程或此查询进程中的另一个线程。确定特定线程是否存在取决于传递给线程的特定参数,这是事件线程列表中线程数据的一部分。个别线程可能会很快完成,而其他线程可能需要很长时间。
为防止重新发明轮子,是否有一些算法、模式或最佳实践来处理编码和等待多个相互依赖的线程?
最佳答案
您可能想看看 Futures 和 Promises,以及 C++11 中的异步包装器接口(interface)。
promise 让您交付结果。
future 允许您等待结果。
通过这种方式,您可以表达线程之间的大量计算依赖关系,并且由于每个消费者都会正确等待其生产者(他们自己可能再次成为消费者),因此在很多情况下,依赖关系会自动解决,如果你保重。
更多信息:
question about futures & promises
一个很good explanation
关于 "broken promises" 的博客条目(- 巴托什·米莱夫斯基)
关于c++ - 编码和等待多个相互依赖的线程的算法、模式或最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19243943/