QRunnable与多线程

本文介绍了Qt中的QRunnable和QThreadPool在多线程编程中的使用。QRunnable作为可运行对象的基类,其run()函数代表要执行的任务。配合QThreadPool,可以在独立线程中运行任务。当QRunnable的autoDelete设为true时,QThreadPool会在任务完成后自动删除对象。通过示例代码展示了如何创建QRunnable派生类并使用QThreadPool启动线程,以及如何通过控制autoDelete属性来管理对象的生命周期。
摘要由CSDN通过智能技术生成

前面的博文中,我们讲过QtConcurrent模块,该模块是Qt中实现并发编程的高级API接口,而QRunnable结合QThreadPoll和QThread都是Qt中与并发编程相关的低级接口。今天我们先来看QRunnable和QThreadPool。

QRunnable类在Qt中是所有可运行对象的基类,代表了由run()函数表示的一个任务或一段要执行的代码。我们一般使用该类和QThreadPool来在另一个独立的线程中执行该代码。并且,如果QRunnable对象的autoDelete()设为true的话,QThreadPool会在run()运行结束后自动删除该对象。

下面,我们写一个例子,来使用一下该类。

新建一个Qt控制台程序,然后写一个派生自QRunnable的类,并重新实现其中的纯虚函数run()即可。

#ifndef RUNNABLE_H
#define RUNNABLE_H
#include <QRunnable>

class Runnable : public QRunnable
{
public:
    Runnable();
    void run();
};

#endif // RUNNABLE_H
#include "runnable.h"
#include <QDebug>
#include <QThread>

Runnable::Runnable()
{

}

void Runnable::run()
{
    qDebug() << "child thread id: " << QThread::currentThreadId();
    int i = 10;
    while(i--)
    {
        qDebug() << QString("hell
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值