QT多线程编程概述之qthread详解

原创
2021/08/24 09:48
阅读数 542

--------分类
GUI线程和辅助线程
GUI线程:主线程,负责其他线程的调度和GUI事件处理
辅助线程:其他耗时、阻塞操作


QT多线程提供形式:
平台无关的线程类、线程安全的事件投递、跨线程的信号-槽连接
QThread 提供了跨平台的多线程解决方案

QT下多线程使用方法

方法一:继承QThread,重写run()的方法
QThread是一个非常便利的跨平台的对平台原生线程的抽象。启动一个线程是很简单的。让我们看一个简短的代码:生成一个在线程内输出"hello"并退出的线程。
需要考虑信号槽连接方式:


 class HelloThread : public QThread
 {
     Q_OBJECT
 private:
     void run();
 };
 
 
另一种方法:moveToThread的方法
其实,这个方法太简单,太好用了。定义一个普通的QObject派生类,然后将其对象move到QThread中。使用信号和槽时根本不用考虑多线程的存在。也不用使用QMutex来进行同步,Qt的事件循环会自己自动处理好这个。
建议使用第二种方法

QThread 是用来管理线程的,它所依附的线程和它管理的线程并不是同一个东西
QThread 所依附的线程,就是执行 QThread t(0) 或 QThread * t=new QThread(0) 的线程。也就是咱们这儿的主线程
 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部