--------分类
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) 的线程。也就是咱们这儿的主线程