可以指出使用 QRunnable 作为 QtConcurrent 的替代方案的一些代码:我在 Qtdoc 中找不到任何 QRunnable 示例。
你有没有为同一个应用程序尝试过 QRunnable 和 QtConcurrent,你能评论一下比较的性能吗?
可以指出使用 QRunnable 作为 QtConcurrent 的替代方案的一些代码:我在 Qtdoc 中找不到任何 QRunnable 示例。
你有没有为同一个应用程序尝试过 QRunnable 和 QtConcurrent,你能评论一下比较的性能吗?
QRunnable
是一个接口。因此,与其寻找“QRunnable
示例”,不如寻找(例如)“QThreadPool
示例”,例如:
http://doc.qt.io/qt-4.8/thread-basics.html#example-1-using-the-thread-pool
如果您在该页面上进一步阅读,它会提到 QtConcurrent 的真正价值在于您正在执行类似于将 STL 算法应用于 STL 容器的操作。当您只有一堆相当不相关的任务要执行时,使用带有 QRunnable 的线程池会更好。
QtConcurrent 建立在 QThreadPool 之上。它在符号上很方便,让您不必自己编写模式,但不会从本质上加快您编写代码的速度。但是...从 QtConcurrent 模式(例如 MapReduce)的角度思考可能会帮助您看到原本不会想到的并行性机会,并且编写更少的代码意味着更容易尝试替代方法并比较它们的性能。