总结
QThread:Qt提供的最基础的线程类,一个对象管理一个线程,自己维护线程启动停止,创建销毁,当然也能基于此类自己建立一个线程池
QThreadPool:Qt提供的基于QThread实现的线程池,只需要提供给线程池“任务”即可,每一个“任务”需要继承QRunnable,pool还贴心的帮忙在运行完成后释放内存。只不过runnable不支持信号槽,可以做多重继承QObject即可。
QtConcurrent:并行计算的高级API,用起来很方便,完全不需要想线程的问题,全都是静态函数,可以运行自定义函数也提供了对容器的操作函数。
相关博客:
Qt多线程-QThread
QThread安全的结束线程
Qt多线程-QThreadPool线程池与QRunnable
Qt多线程-QtConcurrent并行运算高级API
详细对比
Qt事件处理
只有QThread支持。但是其他两个可以用QApplication::postEvent发出事件
Qt信号槽
QThread完全支持,QThreadPool的QRunnable可以通过多重继承支持
Concurrent提供的map/filter函数可以利用QFutureWatcher,使用此方式可用信号控制线程,但仍然无发通过信号槽对线程的数据做修改
run就完全与信号槽无缘了,毕竟调用的只

本文总结了Qt中多线程的三种实现方式:QThread、QThreadPool和QtConcurrent。QThread提供基础线程管理,QThreadPool为线程池,QtConcurrent则提供并行计算的高级API。详细对比了它们在事件处理、信号槽、线程优先级等方面的特点,并给出了不同场景下的推荐使用方案。
最低0.47元/天 解锁文章
1048

被折叠的 条评论
为什么被折叠?



