当前位置: 首页 > news >正文

2. Qt深入 线程

1. QThread

参考:https://blog.csdn.net/island1314/article/details/146461320

1.1 使用重写run函数的方法
这种情况下只有run函数是运行在新线程里,QThread子类的槽函数、成员函数都是运行在主线程

class MyThread : public QThread
{Q_OBJECT
public:void run() {while(1) { qDebug() << "run thread:" << QThread::currentThreadId(); sleep(10000);}}void publicFunc() {qDebug() << "publicFunc thread:" << QThread::currentThreadId();}
public slots:void slot1() {qDebug() << "slot thread:" << QThread::currentThreadId();}
};MyThread* thread1 = new MyThread();connect(this, SIGNAL(notify()), thread1, SLOT(slot1()));thread1->start();thread1->publicFunc();emit notify();

运行结果:可以看到成员函数和槽函数运行在主线程
在这里插入图片描述

1.2 moveToThread
使用moveToThread将object子类对象(例如worker类)移到线程处理,这种情况下,worker类的成员函数依然在主函数运行,而槽函数则在新线程运行

class Worker : public QObject
{Q_OBJECT
public:void publicFunc() {qDebug() <<"publicFunc thread:"<<QThread::currentThreadId();}
public slots:void work1() {qDebug() <<"work1 thread:"<<QThread::currentThreadId();}void work2() {qDebug() <<"work2 thread:"<<QThread::currentThreadId();}
};thread = new QThread();worker = new Worker();worker->moveToThread(thread);connect(thread, SIGNAL(started()), worker, SLOT(work1()));connect(this, SIGNAL(notify()), worker, SLOT(work2()));thread->start();worker->publicFunc();emit notify(); //主线程发送信号,触发worker的槽函数依然运行在新线程

运行结果:可以看到成员函数运行在主线程,而槽函数无论是由thread的信号触发还是主线程的信号触发,都是运行在新线程
在这里插入图片描述

2. QThreadPool

https://blog.csdn.net/zyhse/article/details/109517671

3. QtConcurrent (高级用法)

https://www.feijiblog.com/blog/threadqtconcurrent1
https://blog.csdn.net/jongden/article/details/152814259
在这里插入图片描述

总结

在这里插入图片描述

http://www.dtcms.com/a/609420.html

相关文章:

  • [Godot] C#基于噪声的简单TileMap地图生成
  • Linux(4)—— 基础开发工具
  • 广州好的网站设计公司如何建单位网站
  • 无损改造+智能防控,安科瑞ASCB3为古建筑与历史街区量身打造安全用电解决方案
  • 解决“Move to iOS 卡在准备中”的 9 种有效方法
  • iOS IPA 上传工具全面解析,从 Transporter 到开心上架(Appuploader)命令行的高效上架实践
  • iOS性能调优的系统化实践,从架构分层到多工具协同的全流程优化指南(开发者深度版)
  • GitHub爆火开源项目——RustScan深度拆解
  • iOS和安卓应用上架全指南:从备案到审核发布
  • 海外购物网站排名云商网站建设
  • 解决 Node.js 18+ 构建错误:digital envelope routines::unsupported 完全指南
  • 索尼PSP游戏资源下载 推荐中文汉化ios格式合集分享开源掌机模拟器都支持
  • 【赵渝强老师】OceanBase的连接与路由管理
  • 教育网站建设情况报告长安高端装备网站设计公司
  • Unity游戏打包加密方案解析
  • 考研论文引用格式 AI 校验实操:工具合集 + 技术原理
  • Linux:安装 ActiveMQ 从部署到实践
  • 思政部网站建设总结汕头cms模板建站
  • 云原生与 AI 驱动下的数据工程新图景——解读 DZone 数据工程趋势报告【附报告下载】
  • Linux——解压缩各类文件
  • 基于STM32的多功能旅行箱_329
  • 探索 Java 中的新 HTTP 客户端
  • Swagger技术
  • 100多台物理GPU服务器,每台服务器上有8张GPU卡,组网
  • 英文营销网站 知乎旅游网站建设导航栏
  • 网站服务器管理系统企业网站托管方案
  • vllm缓存使用基础调优实验
  • IGM焊接机器人节气设备
  • 企业网站案例公司德州企业网站建设
  • 从图片到PPT:用Python实现多图片格式(PNG/JPG/SVG)到幻灯片的批量转换