我正在寻找跨平台 C++ master/worker 库或工作队列库。总体思路是,我的应用程序将创建某种任务或工作对象,将它们传递给工作主机或工作队列,后者又会在单独的线程或进程中执行工作。为了提供一些上下文,该应用程序是一个 CD 抓取器,我想要并行化的任务是“抓取轨道”、“将 WAV 编码为 Mp3”等。
我的基本要求是:
- 必须支持可配置数量的并发任务。
- 必须支持任务之间的依赖关系,以便任务在其依赖的所有任务完成之前不会执行。
- 必须允许取消任务(或者至少不阻止我将取消编码到我自己的任务中)。
- 必须允许将状态和进度信息报告回主应用程序线程。
- 必须在 Windows、Mac OS X 和 Linux 上运行
- 必须是开源的。
如果这个库还可以:
- 与Qt的信号/槽机制集成。
- 支持使用线程or执行任务的流程。
通过类比,我正在寻找类似于 Java 的 ExecutorService 或其他一些类似的线程池库,但在跨平台 C++ 中。有谁知道有这样的野兽吗?
Thanks!
我使用它的时间不够长,所以我不确定它是否完全满足您的需求,但请查看自适应通信环境 (ACE) http://www.cs.wustl.edu/~schmidt/ACE.html。该库允许您构造“活动对象”,这些对象具有工作队列并在自己的线程中执行其主体,以及可以在对象之间共享的线程池。然后,您可以将队列工作对象传递给活动对象以供它们处理。对象可以通过多种方式链接。该库相当繁重,有很多东西需要学习,但是已经有几本关于它的书籍,并且在线也有大量的教程信息。它应该能够做你想做的一切,甚至更多,我唯一关心的是它是否拥有你正在寻找的“开箱即用”的接口,或者你是否需要在它的基础上构建才能得到你想要的东西为了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)