一个提供QtConcurrent功能的通用C ++库?

时间:2010-06-12 16:49:32

标签: c++ multithreading qt boost

QtConcurrent太棒了。

我会让Qt文档为自己说话:

  

QtConcurrent包括用于并行列表处理的函数式编程样式API,包括用于共享内存(非分布式)系统的MapReduce和FilterReduce实现,以及用于管理GUI应用程序中的异步计算的类。

例如,您为QtConcurrent::map()提供了一个可迭代序列和一个接受序列中存储的类型项的函数,该函数将应用于集合中的所有项。这是以多线程方式完成的,线程池等于系统上逻辑CPU的数量。

QtConcurrent中还有很多其他功能,例如filter()filteredReduced()等。标准CompSci地图/缩小功能等。

我完全爱上了这个,但我正在开始研究一个不会使用Qt框架的OSS项目。它是一个库,我不想强​​迫别人依赖像Qt这样的大型框架。我试图将外部依赖性保持在最低限度(这是体面的事情)。

我正在寻找一个通用的C ++框架,它提供QtConcurrent所做的相同/相似的高级基元,并且与STL集合一起使用。 AFAIK boost没有这样的东西(虽然我可能错了)。 boost::thread与我正在寻找的相比是非常低级的(但如果请求的lib使用boost::thread进行低级别的工作,那就太棒了。)

我知道C#与他们的Parallel Extensions非常相似,所以我知道这不是一个只有Qt的想法。

你建议我用什么?

2 个答案:

答案 0 :(得分:1)

虽然我没有使用它,但我听说过有关Intel's Threaded Building Blocks的好消息

截至2009年10月,它似乎没有具体的map-reduce。但是人们已经表达了兴趣并建议他们想出一些东西:

http://software.intel.com/en-us/forums/showthread.php?t=65053

“map reduce看起来像过滤器,排序和减少的简单组合,但它可能需要一些魔力才能使其高效”

答案 1 :(得分:0)

您可以使用Boost吗?我认为它不像Qt那样提供高度抽象的层,但是应该可以在Boost的原语之上创建一个相当薄的外观(实际上,可能是现有的一些{{3已经提供了你所需要的东西 - 我不得不承认我不熟悉它们,这就是为什么我说“也许”; - )。

如果你发现现有的附加组件不合适,你的外观将是一个很好的附加组件,可以自己为Boost Vault(或其他开源代码库)做出贡献,“回馈”一个有用的可重用开源软件贡献...我希望如果需要,这会激励你做这项工作! - )