QRunnable - 如何使用它,例子

时间:2012-04-12 15:58:00

标签: multithreading qt qtconcurrent

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

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

1 个答案:

答案 0 :(得分:6)

QRunnable是一个界面。因此,不是寻找“QRunnable示例”,而是寻找(例如)“a 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)进行思考可能会帮助您看到您不会想到的并行机会,并且编写更少的代码意味着尝试替代方法并比较它们的性能会更容易。