Qt多线程的使用

Qt多线程的基本使用方法

线程的常用成员函数
在这里插入图片描述
退出线程,停止底层的事件循环,函数为

void QThread::exit(int returncode =0);

调用线程退出函数之后,线程不会马上退出因为当前任务有可能还没有完成,等待任务完成,然后退出线程,一般况下会在 exit()后边调用这个函数。

bool QThread::wait(unsigned long time = ULONG MAX);

启动子线程,start函数括号中中设置的是优先级。

[slot] void QThread::start(Priority priority = InheritPriority);

/线程休眠函数

[static] void Qrhread::msleep(unsigned long msecs);//单位毫秒
[static] void QThread::sleep(unsigned long secs);//单位秒
[static] void QThread::usleep(unsigned long usecs);//微秒

线程要处理什么任务,需要写到run()中

[virtual protected] void QThread::run();

使用方式

需要创建一个线程类的子类,让其继承QT中的线程类 QThread

class MyThread:public QThread
{
    ......
}

重写父类的 run() 方法,在该函数内部编写子线程要处理的具体的业务流程

class MyThread:public QThread
{
    ......
 protected:
    void run()
    {
        ........
    }
}

在主线程中创建子线程对象,new 一个就可以了

MyThread * subThread = new MyThread;

启动子线程, 调用 start() 方法

subThread->start();

实际运用

创建一个新的类继承自 QThread。

class WorkerThread : public QThread//这里是头文件
   {
   public:
       WorkerThread();
       ~WorkerThread();
   protected:
       void run() override;
   };

实现 run 方法,在这个方法中编写子线程要执行的任务。

WorkerThread::WorkerThread() {}
WorkerThread::~WorkerThread() {}
 void WorkerThread::run()
   {
       // 子线程执行的任务
       qDebug() << "Running in worker thread.";
       // 可以进行耗时操作,例如文件读取、复杂计算等
   }

在主线程中创建并启动子线程。

include <WorkerThread.h>//头文件中有了就不用在cpp文件引入
 int main(int argc, char *argv[])
   {
       QApplication app(argc, argv);

       WorkerThread *thread = new WorkerThread();
       thread->start();//线程开始运行

       return app.exec();
   }

当然实际运用中,会有数据的传输,使用信号与槽进行子线程与主线程的数据交互,这个信号与槽的知识,教程较多,这里就不多赘述。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值