kir*_*off 5 qt multithreading 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)进行思考可以帮助您看到您不会想到的并行机会,并且编写更少的代码意味着更容易尝试替代方法并比较它们的性能.