QT多线程的两种创建方法

本文介绍了Qt中两种创建多线程的方法:继承QThread的run函数和将QObject派生类放入Thread。虽然两种方法都方便,但Qt官方推荐使用后者,因为它更灵活。在第一种方法中,只有run()内部运行在新线程;而在第二种方法中,整个QObject都在新线程执行。下篇博客将讨论如何利用互斥锁进行线程同步。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值