Qt有两种多线程的方法,其中一种是继承QThread的run函数,另外一种是把一个继承于QObject的类转移到一个Thread里。
Qt4.8之前都是使用继承QThread的run这种方法,但是Qt4.8之后,Qt官方建议使用第二种方法。两种方法用起来都比较方便,但继承QObject的方法更加灵活。这里要记录的是如何正确的创建一个线程。
值得注意的是第一种方法只有run()里面在新的线程里,第二种方法就可以在新线程中调用函数
下一个博客讲怎么用互斥锁进行线程同步
//mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
extern int globalCount ;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
qDebug()<<tr("主线程id:")<<QThread::currentThreadId();
//多线程方式1
myThread = new MyThread();//继承QThread
myThread->start();
//多线程方式2
myThread1 = new MyThread1();//继承QObject
thread1 = new QThread;
connect(thread1, SIGNAL(started()),myThread1, SLOT(doWork()));//个人推荐这种
myThread1->moveToThread(thread1);
thread1->start();
}
MainWindow::~MainWindow()
{
delete ui;
}