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