基于Qt的多线程并行和循序运行实验Demo

        致谢(Acknowledgement)

        感谢Youtube博主Qt With Ketan与KDAB精心录制的Qt多线程处理应用教程,感谢Bilibili博主爱编程的大丙对Qt多线程与线程池内容深入浅出的讲解。


一、计算机线程相关概念

        线程概念[1]

        在计算机科学中,执行线程是可以由调度程序(通常为操作系统的一部分)独立管理的编程指令的最小序列,其被包含在进程之中,是进程中的实际运作单位。

        多线程概念[2]

        在计算机体系结构中,多线程是中央处理器(CPU)或多核处理器中的单个内核提供多个执行线程的能力。多线程技术,即每一个线程都代表一个进程内的一个独立执行上下文序列。

        进程概念[3-4]

        在计算机科学中,进程是计算机中已运行程序的实体。进程曾经是分时系统的基本运作单位;在面向进程设计的系统(如早期的UNIX,Linux 2.4及更早的版本)中,进程是程序的基本执行实体;在面向线程设计的系统(如当代多数操作系统、Linux 2.6及更新的版本)中,进程本身不是基本运行单位,而是线程的容器。

        程序本身只是指令、数据及其组织形式的描述,进程才是程序的真正运行实例。若干进程有可能与同一个程序相关联,并且每个进程皆可以同步或异步(并行或循序)的方式独立运行。现代计算机系统可在同一段时间内以进程的形式将多个程序加载到内存中,并基于时间共享(或称时分复用)以在一个处理器上表现出同时运行的感觉。

        同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间、文件描述符和通信处理等。同一进程中的多个线程有各自的调用栈(call stack)、寄存器环境(register context)和线程本地存储(thread-local storage)。

        CPU(Central Processing Unit)[5]

        中央处理单元,CPU不等于物理核,更不等于逻辑核。一个CPU可以有多个物理内核,同时在超线程技术下,一个物理内核可以分为多个逻辑核

        CPU物理内核[5]

        具体存在的、真实的CPU核,有独立的电路元件以及L1,L2缓存,可以独立地执行指令。

        CPU逻辑处理器(逻辑核)[5]

        在同一个CPU物理内核里逻辑层面的核。逻辑核得益于超线程技术(Hyper-threading),超线程可以在一个逻辑核等待指令执行的间隔(等待从缓存或内存中获取下一条指令),把时间片分配到另一个逻辑核,高速地在两个逻辑核之间切换。

CPU物理内核和逻辑核关系示例

二、基于Qt的多线程并行和多线程循序运行Demo

        该Demo的代码工程文件夹已与本博客进行资源绑定,其参考自Youtube博主Qt With Ketan的技术视频。

基于Qt的多线程并行、多线程循序运行Demo图示

参考资料:

[1] Thread (computing) - Wikipedia

[2] Multithreading (computer architecture) - Wikipedia

[3] https://en.wikipedia.org/wiki/Process_(computing)

[4] 计算机操作系统中的线程/进程

[5] 性能基础之CPU、物理核、逻辑核概念与关系-腾讯云开发者社区-腾讯云 (tencent.com)

[6] 数据库系统工程师教程 / 王亚平,刘伟主编.—4版.—北京:清华大学出版社,2020.12(2022.3重印)

[7] Multithreading with Qt (Part 6) - Signals and Slots across Threads (youtube.com)

[8] Qt 6 C++开发指南 / 王维波,栗宝鹃,侯春望著.—北京:人民邮电出版社,2023.1.

参考案例:

/*1*/Qt QMutex | MultiThreading Synchronization In C++ | Prevent Deadlocks | | Qt C++ | Qt Creator (youtube.com)

/*2*/  Qt中多线程-线程池的使用-C/C++/qt_哔哩哔哩_bilibili

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/905299.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PyCharm专业版设置远程开发环境

以下是在PyCharm中设置远程开发环境的详细步骤: 没有专业版的在并夕夕上买 准备工作 确保本地已安装PyCharm专业版,因为社区版通常不支持远程开发功能。在远程服务器上安装好所需的Python版本以及相关的开发包和库,并且服务器需要开启SSH服务…

MySQL基础概念——针对实习面试

目录 MySQL基础什么是关系型数据库?什么是SQL?什么是ACID属性?什么是MySQL?MySQL为什么流行(它的优点)? 30秒读全文 MySQL基础 什么是关系型数据库? 关系型数据库(Relat…

深入布局- grid布局

属性使用案例: 一、display 通过给元素设置:display:grid | inline-grid,可以让一个元素变成网格布局元素, display: grid:表示把元素定义为块级网格元素,单独占一行;(如下图:) display: inlin…

【力扣打卡系列】反转链表

坚持按题型打卡&刷&梳理力扣算法题系列,语言为go,Day12 反转链表 题目描述 解题思路 最开始的头节点为空,可以赋值为nil从前往后依次逆转下一个节点的指向即可 代码参考 /*** Definition for singly-linked list.* type ListNode s…

超越YOLO11、RT-DETRv2/3!中科大D-FINE重新定义边界框回归任务

D-FINE 在 COCO 数据集上以 78 FPS 的速度取得了 59.3% 的平均精度 (AP),远超 YOLOv10、YOLO11、RT-DETR v1/v2/v3 及 LW-DETR 等竞争对手,成为实时目标检测领域新的领跑者。目前,D-FINE 的所有代码、权重以及工具已开源,包含了详…

已解决:VS2022一直显示编译中但无法运行的情况

本问题已得到解决,请看以下小结: 关于《VS2022一直显示编译中但无法运行的情况》的解决方案 记录备注报错时间2024年报错版本VS2022报错复现突然VS2022不能启动,一直显示编译中,取消重试无效,重新生成解决方案无效报错…

UML图之对象图详解

~犬📰余~ “我欲贱而贵,愚而智,贫而富,可乎? 曰:其唯学乎” 零、什么是对象图 对象图(Object Diagram)是UML中一种重要的静态结构图,它用于表示在特定时间点上系统中的对…

微信支付宝小程序SEO优化的四大策略

在竞争激烈的小程序市场中,高搜索排名意味着更多的曝光机会和潜在用户。SEO即搜索引擎优化,对于小程序而言,主要指的是在微信小程序商店中提高搜索排名,从而增加曝光度和用户访问量。有助于小程序脱颖而出,提升品牌知名…

Java面试经典 150 题.P27. 移除元素(002)

本题来自:力扣-面试经典 150 题 面试经典 150 题 - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台https://leetcode.cn/studyplan/top-interview-150/ 题解: class Solution {public int removeElement(int[] nums, int…

新160个crackme - 088-[KFC]fish‘s CrackMe

运行分析 需破解用户名和RegKey PE分析 C程序,32位,无壳 静态分析&动态调试 ida函数窗口逐个查看,找到关键函数sub_401440 ida无法动调,需使用OD,启用StrongOD插件才可以动调ida静态分析,逻辑如下&…

[Linux关键词]unmask,mv,dev/pts,stdin stdout stderr,echo

希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,大大会看到更多有趣的博客哦!!! 喵喵喵,你对我真的…

你知道你的顾客长什么样儿吗 | 顾客画像的魅力

0139岁、亚裔、女性和 Costco 「一位 39 岁的亚裔女性,年收入可达到 12.5 万美金」,这是 Numerator 描绘的 Costco 2023 年的顾客画像。而一个典型的 Costco 会员每两周的周末会去一次 Costco(约为每年前往Costco采买30次)&…

报表制作神器,轻松应对复杂报表

在企业运营中,面对海量数据和复杂报表的处理,不少公司都希望能有一款便捷、高效的工具来帮忙完成各类报表任务。今天要给大家推荐的是一款备受用户好评的国产报表工具——山海鲸报表,它不仅能处理复杂的数据表,还拥有丰富的可视化…

auto 项目笔记

基础设置 1.设置python目录为根路径 1. merge_with_history debug (1) coomon.yaml 修改 最下边的 root: /mnt/sdb/daimler/EHPV2/Ruiming_InternalDaily (2) 环境变量设置为1时 不走此步骤做的任何处理,直把上步数据接透传出去 2.

亚马逊云免费Amazon CloudFront服务

🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《C》 《Linux》 ❤️感谢大家点赞👍收藏⭐评论✍️ 文章目录 引言一、亚马逊云科技简介二、亚马逊云科技免费资源注册信息准备注册亚马逊云科技账号 三、…

企业应该采用和支持网络安全的几个实践

令人惊讶的是,网络安全可以像遵循最佳实践一样简单,理想情况下应该将其融入企业文化本身。在这篇文章中了解更多。 网络安全的重要性 在当今的网络安全期望中,软件工程师应该优先考虑他们的计算机系统和内部IT网络的安全性。我认为严重依赖…

升降压斩波【电力电子技术5章】

降压斩波: 升压斩波: 升降压斩波:

细说 ThreadPool(线程池)使用与优势以及实现方式

细说 ThreadPool(线程池)使用与优势https://mp.weixin.qq.com/s?__bizMzkzMTY0Mjc0Ng&mid2247485102&idx1&sndc578203c855e479a5b678b99b0f46b6&chksmc266aabbf51123ade562bf61230c3665886ae6c38fec790d2d9fb83afa805a1402d81086263c#r…

一种将树莓派打造为游戏机的方法——Lakka

什么是Lakka? Lakka是一款Linux发行版,轻量级的,可将小型计算机转变为一台复古游戏机。 图1-Lakka官网,见参考链接[1] Lakka是RetroArch和libretro生态系统下的官方操作系统,前者RetroArch是模拟器、游戏引擎和媒体播…

中医知识图谱之可视化模糊查询+力导向图+环形图的布局切换

后端通过springboot链接neo4j实现 前端通过echarts的关系图组件实现,echarts版本是4.2.1(有点老的版本但是不影响) 实现功能是模糊查询中药方剂和药材的关系图谱 1 知识图谱可视化 黄色标识药方方剂、蓝色是药材,支持切换布局、支持模糊搜索…