QT5开发笔记(九)--线程
新建基于QThread的类:
#include <QString>
#include <QThread>
class MyThread : public QThread
{
public:
MyThread(QString s);
private:
QString name;
protected:
void run();
};
重载run函数:
void MyThread::run()
{
int i = 0;
while(1)
{
qDebug()<<name.toStdString().c_str()<<":"<<i++;
sleep(1); // 线程休眠
}
}
创建线程:
MyThread *t1 = new MyThread("ThreadA");
MyThread *t2 = new MyThread("ThreadB");
线程启动:
t1->start(); // 默认优先级InheritPriority
t2->start(QThread::Priority::NormalPriority); // 指定优先级
线程终止:
t1->terminate();
线程信号:
void started(QPrivateSignal);
void finished(QPrivateSignal);
connect(t1, SIGNAL(started()), this, SLOT(on_thread_started()));
connect(t1, SIGNAL(finished()), this, SLOT(on_thread_finished()));
线程休眠: 由线程自己调用,不建议在主程序中调用(否则调用程序会阻塞)
sleep(5); // 单位为秒
msleep(500); // 毫秒级休眠
usleep(10000); // 微秒级休眠