C++/Qt - QThread与QRunnable

CDT*_*CDT 14 c++ concurrency qt qthread

QThreads和QRunnable有什么区别?

什么时候应该使用QThread和QRunnable?

Ale*_*scu 12

QThread 可以运行一个事件循环, QRunnable 没有,所以不要将它用于设计为具有事件循环的任务。此外,作为 QObject,QRunnable 没有与其他组件显式通信的内置方法;您必须使用低级线程原语(例如用于收集结果的互斥保护队列等)手动编写代码。使用 QThread,您可以使用线程安全的信号和插槽。


Eri*_*aju 7

QRunnable类和QtConcurrent::run()功能非常适合于我们想要在一个或多个次级线程,而不需要由提供的QThread全功率和灵活性,以执行一些后台处理的情况.

来自Mark Summerfield的" 高级Qt编程:使用C++和Qt 4创建出色的软件 "

  • 如果它解释了"QThread提供的全部功能和灵活性",这个答案会很有用,因为它建议你默认使用QRunnable,并且只在你需要时使用QThread ......什么?信号?事件循环?等等. (8认同)