Qt 中通过 QThread 直接支持多线程
– QThread 是一个跨平台的多线程解决方案
– QThread 以简洁易用的方式实现多线程编程
注意:
1、Qt 中的线程以对象的形式被创建和使用
2、每一个线程对应着一个 QThread 对象
QThread 中关键成员函数:
– void run()
线程体函数,用于定义线程功能(执行流)
– void start()
启动函数,将线程入口地址设置为 run 函数
– void terminate()
强制结束线程(不推荐)
开发中terminate()是禁止使用的,会使得操作系统暴力终止线程,而不会考虑数据完整性,资源得不到释放。
那我们该如何优雅的终止一个线程呢?
方案思路
- run() 函数执行结束时优雅终止线程的唯一方式
- 在线程类中添加标志变量 m_toStop (volatile bool)
- 通过 m_toStop 的值判断是否需要从 run() 函数返回
如何开启一个线程呢?来来来看代码
//自定义类继承 QThread,并重写 run 方法,这个方法内的执行体就是我们想要在线程里做的事情。
class MyThread : public QThread
{
public:
MyThread(){
}
void run()
{
qDebug()<<objectName()<<"start"<<endl;
for(int i =0;i<10000;i++){
qDebug()<<objectName()<< i<< endl;
msleep(500);
}
qDebug()<<objectName()<<"end"<<endl;
}
};
int main(