6

可以指出使用 QRunnable 作为 QtConcurrent 的替代方案的一些代码:我在 Qtdoc 中找不到任何 QRunnable 示例。

你有没有为同一个应用程序尝试过 QRunnable 和 QtConcurrent,你能评论一下比较的性能吗?

4

1 回答 1

9

QRunnable是一个接口。因此,与其寻找“QRunnable示例”,不如寻找(例如)“QThreadPool示例”,例如:

http://doc.qt.io/qt-4.8/thread-basics.html#example-1-using-the-thread-pool

如果您在该页面上进一步阅读,它会提到 Q​​tConcurrent 的真正价值在于您正在执行类似于将 STL 算法应用于 STL 容器的操作。当您只有一堆相当不相关的任务要执行时,使用带有 QRunnable 的线程池会更好。

QtConcurrent 建立在 QThreadPool 之上。它在符号上很方便,让您不必自己编写模式,但不会从本质上加快您编写代码的速度。但是...从 QtConcurrent 模式(例如 MapReduce)的角度思考可能会帮助您看到原本不会想到的并行性机会,并且编写更少的代码意味着更容易尝试替代方法并比较它们的性能。

于 2012-04-12T16:12:19.547 回答