C++/Qt 多线程(续)

一、前言


        前篇文章提供了Qt软件官方提供的一个我认为较为经典的多线程编程示例,总体代码里不是很多,也较为容易理解,但是其中也涉及到了一些串口编程和定时器编程的内容,还不是很专一讲述多线程的内容,为此,提供一篇使用QThread创建多线程编程的示例。

        对于上篇内容可以点击下方链接查看:C++/Qt 多线程-CSDN博客

二、使用QThread创建多线程程序


         1、QThread类简介

        一个QThread类的对象管理一个线程。在设计多线程程序的时候,需要从QThread继承定义线程类,并重定义QThread的虚函数run(),在函数run()里处理线程的事件循环。

        我们把应用程序的线程称为主线程创建的其它线程称为工作线程,一般会在主线程里创建工作线程,并调用函数start()开始执行工作线程的任务。函数start()会在其内部调用函数run()进入工作线程的事件循环,函数run()的程序体一般是一个无线循环,可以在函数run()里调用函数exit()或quit()结束线程的事件循环,或在主线程里调用函数terminate()强制结束线程。

        QThread类的主要接口函数如表所示,表中列出了函数参数,但是省略了const关键字。

QThread类的主要接口函数
类型 函数原型 功能
公有函数 bool isFinished() 判断线程是否已结束,也就是是否从函数run()退出
bool isRunning() 判断线程是否正在运行
QThread::Priority prioryty() 返回线程的优先级,优先级用枚举类型QThread::Priority表示
void setPriority(QThread::Priority priority) 设置线程的优先级
bool wait(unsigned long time) 阻塞线程运行,直到线程结束,也就是从函数run()退出,或等待时间超过time毫秒后此函数返回false
公有槽函数 void exit(int returnCode = 0) 退出线程的事件循环,设置退出码为returnCode,其设置为0表示退出成功,设置为其它值表示有错误
void quit() 退出线程的事件循环,并设置退出码为0,quit()等效于exit(0)
void start(QThread::Priority priority = InheritPriority) 设置线程优先级为priority,其内部调用run()开始运行线程,操作系统根据priority参数进行调度
void terminate() 终止线程的运行,但不是立即结束线程,而是等待操作系统结束线程,使用te
  • 21
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张鱼小丸子_微辣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值