首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Qt多线程编程

最近要阅读没阅读,要分享没分享,还是写技术文章最重要

关于Qt的高级应用,多线程多进程线程池网络编程等应用,我已经整理了一些还可以的文章,最近发布在,设置了付费,因为还不想公开。我已经在开头声明了公众号会发布,本意是等以后没有创意的时候从里面选文章发到公众号,没想到居然有人刷到我的文章还了,19.9挺贵的,可能急需吧,没事以后会免费。想了解未来一个月我会发布的文章可以点击阅读全文转跳CSDN。

不过这又让我了解到一个深坑,19.9,CSDN平台拿了8,我六,平台四,真坑,关键是我看了下提现,300起步,钱也取不出来,啥也不是

我在github仓库里面看到之前遗留的Qt_Demo,想了想阅读捞不到,不如骗点Star,把文章相应的工程文件提交到仓库里面去,上次的也同步过去了,以及这篇文章的两个线程Demo。

给我个Star

https://github.com/ADeRoy/Qt_Demo

多线程开发

线程基础

GUI线程与工作线程

每个程序启动后拥有的第一个线程称为,即。QT中所有的组件类和几个相关的类只能工作在GUI线程,不能工作在次线程,即,主要负责处理GUI线程卸下的工作。

什么时候用到多线程?

以界面为例:所有的都要放到线程里面

IO操作 文件IO (套接字 eg:CAN linux下也是套接字) 等外设 ;因为不确定什么时候能读写完成

耗时的算法 eg:

注意

线程里面尽量少用 while(1) + sleep(),尤其是while

eg:第一个例子如果用while(1),那么当线程exit(),并等待退出时wait()时不会退出线程,

QThread介绍

提供了一个与平台无关的管理线程的方法。一个QThread对象管理一个线程。QThread的执行从run()函数的执行开始,在Qt自带的类中,run()函数通过调用函数来启动事件循环机制,并且在线程内部处理Qt的事件。在Qt中建立线程的主要目的就是。QThread的使用方法有如下两种:

QObject::moveToThread()

继承QThread类

继承QThread类

程序运行后开启线程,打印100~0

Program右键添加新文件,继承QThread

添加头文件

添加宏

不添加Q_OBJECT宏无法使用信号与槽机制

重写run函数

mythread.h文件:

mythread.cpp

main.c

QObject::moveToThread()

这里有一个小示例

创建的是带界面的mainwindow窗口

Program右键添加新文件,继承QObject

2MyThread.h

MyThread.cpp

mainwindow.h

mainwindow.cpp

关键字【Qt多线程编程】

End

作者 | 梦凡

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200828A0HZ4U00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券