【发布时间】:2010-06-12 16:49:31
【问题描述】:
QtConcurrent 太棒了。
我会让 Qt 文档自己说话:
QtConcurrent 包括用于并行列表处理的函数式编程风格 API,包括用于共享内存(非分布式)系统的 MapReduce 和 FilterReduce 实现,以及用于管理 GUI 应用程序中的异步计算的类。
例如,您给QtConcurrent::map() 一个可迭代序列和一个函数,该函数接受存储在序列中的类型的项目,并且该函数应用于集合中的所有项目。这是以多线程方式完成的,线程池等于系统上逻辑 CPU 的数量。
QtConcurrent 中还有很多其他功能,如filter()、filteredReduced() 等。标准的 CompSci 映射/归约函数等。
我完全爱上了这个,但我正在着手开发一个不会使用 Qt 框架的 OSS 项目。它是一个库,我不想强迫别人依赖像 Qt 这样的大框架。我正在尝试将外部依赖项保持在最低限度(这是体面的事情)。
我正在寻找一个通用 C++ 框架,它提供与 QtConcurrent 相同/相似的高级原语,并且适用于 STL 集合。 AFAIK boost 没有这样的东西(不过我可能错了)。 boost::thread 与我正在寻找的相比非常低级(但如果请求的库使用 boost::thread 进行低级工作,那就太好了)。
我知道 C# 与他们的 Parallel Extensions 有一些非常相似的东西,所以我知道这不仅仅是 Qt 的想法。
你建议我用什么?
【问题讨论】:
-
QtConcurrent 很酷。我调整了 Mandelbrot 示例以使用并行接口...您可能会感兴趣:hostilefork.com/thinker-qt
-
@Hostile 是的,QtConcurrent 很酷。正如我所说,我一直在使用它。我只是在寻找类似的东西,它适用于 STL 集合而不是 Qt 本身。
-
我可能错了,但我认为 Qt 的模块化意味着您最多只能使用 QtCore 和 QtConcurrent(而不是“像 Qt 这么大的框架”)?
-
@mosfet 是的,但我也想避免链接到 QtCore。
标签: c++ multithreading qt boost