多线程
2021-04-02 22:28
标签:idg 发送 thread 多任务 timer ted 间接 lpm protect 1、qt4.7以前版本处理方式,多线程的使用 1、自定义一个类,继承于QThread, 2、使用的地方需要创建一个类对象 3、线程使用 1、创建一个类继承QThread 2、实现run()函数 3、线程启动,转去执行run() 4、等待run()发出线程结束信号,并处理信号 5、线程结束处理 6、释放线程资源 7、释放线程 函数实现 多线程 标签:idg 发送 thread 多任务 timer ted 间接 lpm protect 原文地址:https://www.cnblogs.com/lbx-cnblogs/p/13471440.htmlclass MyThread : public QThread
{
public:
void run(); // 多任务执行函数
signals:
void isDone(); // 处理完成后需要发送信号需要知道,线程处理完成任务
}
void run() // 函数实现
{
// 处理复杂任务
// 发送信号 任务处理完成
emit isDone();
}
MyThread thread;
// 在需要多任务的地方启动线程
// 不可以直接掉用run()
// start() 间接调用run()
thread.start(); // 启动线程
#include
void myThread::run()
{
qDebug() ";正在睡觉";
sleep(5); // 任务处理代码
emit isDone(); // 发送信号 说明该线程结束了
}
void Widget::on_buttonStart_clicked()
{
if(myTimer->isActive() == false)
{
myTimer->start(100);
}
// 需要多线程的地方 启动线程
thread->start(); // 启动线程
}
thread = new myThread(this);
// 处理线程结束信号标志
connect(thread,&myThread::isDone,this,&Widget::dealPmythread);
void Widget::dealPmythread()
{
qDebug() "deal over";
myTimer->stop(); // 线程结束了 进一步处理
}
// 窗口右上角X 关闭时,发出信号处理, 释放线程资源
connect(this,&Widget::destroyed,this,&Widget::closeThread);
void Widget::closeThread()
{
thread->quit(); // 关闭线程
thread->wait(); // 等待线程处理完资源
}