学习一下Qt的多线程编程。实现3个线程,每个线程3s在控制台打印一个信息。

开始

创建MyThread类,继承自QThread。
下面有个坑,就是QThread的sleep是以s为单位,而windows.h的Sleep函数是以ms为单位。

mythread.h

#ifndef MYTHREAD_H
#define MYTHREAD_H

#include<QThread>
#include<QDebug>
class MyThread : public QThread
{
private:
    QString threadname;

public:
    MyThread(QString name);

protected:
    void run();
};

#endif // MYTHREAD_H

mythread.cpp

#include "mythread.h"

MyThread::MyThread(QString name)
{
    threadname= name;
}


void MyThread::run()
{
    while(true){
        sleep(3);
        qDebug()<<"print from "<<threadname;
    }
}

main.cpp

#include<QDebug>
#include "mythread.h"
#include<windows.h>
int main(int argc, char *argv[])
{

    MyThread trd1("thread 1");
    trd1.start();
    MyThread trd2("thread 2");
    trd2.start();
    MyThread trd3("thread 3");
    trd3.start();
    while(true){
        Sleep(5000);
        qDebug()<<"print from main";
    }
    return 0;
}

结束

最后成功的效果如下图:

final


我很好奇