c++ - 提供 QtConcurrent 功能的通用 C++ 库?

标签 c++ multithreading qt boost

QtConcurrent太棒了。

我会让 Qt 文档自己说话:

QtConcurrent includes functional programming style APIs for parallel list processing, including a MapReduce and FilterReduce implementation for shared-memory (non-distributed) systems, and classes for managing asynchronous computations in GUI applications.

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

QtConcurrent 中还有很多其他函数,比如 filter()filteredReduced() 等。标准的 CompSci map/reduce 函数之类的。

我完全爱上了这个,但我正在开始一个不使用 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

"map reduce looks like a simple combination of a filter, a sort, and a reduction but it might need some magic to get it to be efficient"

关于c++ - 提供 QtConcurrent 功能的通用 C++ 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3029394/

相关文章:

c++ - 为什么 C++ 流操纵器没有调用运算符?

c++ - Qt 中的槽函数是否在另一个线程上运行?

multithreading - 我是否必须为线程需要创建对象的副本

java - 在多线程应用程序中使用共享的 Weka 分类器导致异常

linux - QT 维护工具在 Linux 上的文件路径位置是什么?

c++ - QML,如何从 C++ 动态更改 Repeater 的项目

c++ - 类前向声明​​失败

c++ - 如何设计具有不同类型的通知和观察者的观察者模式?

java - Android - 关闭一个 Activity 后,当我再次运行该应用程序时,两个 Activity 同时运行。我怎样才能避免它?

c++ - 代码的作用是什么以及如何在我的自定义项目中使用它?