QtConcurrent 很棒。

我将让Qt文档为自己辩护:



例如,您给QtConcurrent::map()一个可迭代的序列,以及一个接受该序列中存储的类型的项目的函数,该函数将应用于集合中的所有项目。这是通过多线程方式完成的,线程池等于系统上逻辑CPU的数量。
QtConcurrent中还有许多其他功能,例如filter()filteredReduced()等。标准的CompSci映射/归约功能等。

我完全爱上了它,但是我正在开始一个不会使用Qt框架的OSS项目。这是一个图书馆,我不想强​​迫其他人依赖像Qt这样的大型框架。我试图将外部依赖性降到最低(这是一件很体面的事情)。

我正在寻找一个通用的C++框架,该框架提供与QtConcurrent相同/相似的高级基元,并且可以与STL集合一起使用。 AFAIK boost没有这样的内容(尽管我可能是错的)。与我要查找的内容相比,boost::thread非常低级(但是,如果请求的库将boost::thread用于低级工作,那就太好了)。

我知道C#的并行扩展功能非常相似,所以我知道这不是Qt独有的想法。

你建议我用什么?

最佳答案

我听说过有关Intel's Threaded Building Blocks的好消息,尽管我没有使用过

截至2009年10月,它似乎还没有专门的map-reduce方法。但是人们已经表达了兴趣并建议他们要提出一些建议:

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

08-17 05:30