Qt之QtConcurrent

news2025/1/6 21:59:48

简介

QtConcurrent是针对qt中多线程相关的高层封装,如QFuture

结构

Qtconcurrent命名空间中的run支持的有
在这里插入图片描述
其对应的functor下结构为
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

类关系

functor对应的类核心关系为

StoredFunctorCall0<T FunctionPointer>
+runFunctor()
RunFunctionTask<T>
+ T result
+run()
RunFunctionTaskBase<T>
+run()
+runFunctor()
QFutureInferface<T>
QRunnable

RunFunctionTaskBase

  • start():默认使用的是全局线程池
QFuture<T> start(QThreadPool* poll)
{
	this->setThreadPool(pool);
	this->setRunnable(this);
	this->reportStarted();
	QFuture<T> theFuture = this->future();
	pool->start(this, 0);
	return theFuture;
}
  • run():是空实现
void run() {}
  • runFunctor():纯虚函数
virtual void runFunctor() = 0;

RunFunctionTask

是整个QtConcurrent::run执行框架
在这里插入图片描述

其重写了QRunnable的run方法,执行runFunctor

template <typename T>
class RunFunctionTask : public RunFunctionTaskBase<T>
{
public:
	void run() override
	{
		if (this->isCancelled()) {
			this->reportFinished();
			return;
		}
		
		#ifndef QT_NO_EXCEPTIONS
			try {
		#endif
				this->runFunctor();
		#ifndef QT_NO_EXCEPTIONS
			} catch(QException& e) {
				QFutureInterface<T>::reportException(e);
			} catch(...) {
				QFutureInferface<T>::reportException(QUnhandledException());
			}
		#endif

		this->reportResult(result);
		this->reportFinished();
	}
};

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

鸿蒙应用开发搬砖经验之-ArkWeb加载页面的超简单示例

前言 系统环境&#xff1a;Mac mini M2 14.5 (23F79) 开发IDE&#xff1a;DevEco Studio 5.0.1 Release 示例 第一步&#xff1a;创建一个Empty Ability工程 第二步&#xff1a;先run一下&#xff0c;确定工程初步化正常&#xff0c;模拟器正常启动应用&#xff08;要先提…

大模型系列17-RAGFlow搭建本地知识库

大模型系列17-RAGFlow搭建本地知识库 安装ollama安装open-wehui安装并运行ragflowRAG&#xff08;检索、增强、生成&#xff09;RAG是什么RAG三过程RAG问答系统构建步骤向量库构建检索模块生成模块 RAG解决LLM的痛点 使用ragflow访问ragflow配置ollama模型添加Embedding模型添加…

SimForge HSF 案例分享|复杂仿真应用定制——UAVSim无人机仿真APP(技术篇)

导读 「神工坊」核心技术——「SimForge HSF高性能数值模拟引擎」支持工程计算应用的快速开发、自动并行&#xff0c;以及多域耦合、AI求解加速&#xff0c;目前已实现航发整机数值模拟等多个系统级高保真数值模拟应用落地&#xff0c;支持10亿阶、100w核心量级的高效求解。其低…

微电网到底是什么?和光伏有什么关系?

在现代能源体系中&#xff0c;微电网作为一种新型的电力系统结构&#xff0c;正逐渐受到广泛关注和应用。那么&#xff0c;微电网到底是什么&#xff1f;它与光伏又有怎样的关系呢&#xff1f;本文将对此进行详细解析。 微电网的基本概念 微电网&#xff08;Micro-Grid&#x…

印象笔记06——再谈谈更新

印象笔记06——再谈谈更新 [!CAUTION] 好吧&#xff0c;我承认在前五期的努力下&#xff0c;我还是用的obsidian多一些。印象笔记很大程度用来弄清单&#xff0c;但是扭头看了看自己的会员时间&#xff0c;不能浪费啊&#xff01;本期再谈谈印象笔记近期的一些更新&#xff0c;…

爱死机第四季(秘密关卡)4KHDR国语字幕

通过网盘分享的文件&#xff1a;love_death_robot 链接: https://pan.baidu.com/s/1bG3Xtdopenil2O_y93hY_g?pwd8kib 提取码: 8kib

Android Studio学习笔记

01-课程前面的话 02-Android 发展历程 03-Android 开发机器配置要求 04-Android Studio与SDK下载安装 05-创建工程与创建模拟器

unity学习3:如何从github下载开源的unity项目

目录 1 网上别人提供的一些github的unity项目 2 如何下载github上的开源项目呢&#xff1f; 2.1.0 下载工具 2.1.1 下载方法1 2.1.2 下载方法2&#xff08;适合内部项目&#xff09; 2.1.3 第1个项目 和第4项目 的比较 第1个项目 第2个项目 第3个项目 2.1.4 下载方法…

自动驾驶新纪元:城区NOA功能如何成为智能驾驶技术的分水岭

目录 一、NOA 的定义 二、NOA 的主要特点 导航集成 场景覆盖 智能决策 高级感知能力 驾驶员参与 三、NOA 的优势 四、NOA的衡量指标 定性评价指标 安全性评价指标定义 可靠性评价指标定义 舒适性评价指标定义 通行效率评价指标 定量评价指标 五、代表厂商的实测…

解决uniapp H5页面限制输入框只能输数字问题

工作记录 最最近在做 uniapp 开发的移动端 H5 页面&#xff0c;有个需求是金额输入框只能输入数字&#xff0c;不能输入小数点和其他字符&#xff0c;经过各种尝试&#xff0c;发现其他字符可以通过正则过滤掉&#xff0c;但是输入小数点的话&#xff0c;因为没有触发 input 和…

JDK8源码分析Jdk动态代理底层原理

本文侧重分析JDK8中jdk动态代理的源码&#xff0c;若是想看JDK17源码分析可以看我的这一篇文章 JDK17源码分析Jdk动态代理底层原理-CSDN博客 两者之间有着略微的差别&#xff0c;JDK17在JDK8上改进了不少 目录 源码分析 过程 生成的代理类大致结构 本文侧重分析JDK8中jdk…

STM32单片机芯片与内部57 SPI 数据手册 寄存器

目录 一、SPI寄存器 1、SPI控制寄存器 1(SPI_CR1)(I2S模式下不使用) 2、SPI控制寄存器 2(SPI_CR2) 3、SPI 状态寄存器(SPI_SR) 4、SPI 数据寄存器(SPI_DR) 5、SPI CRC多项式寄存器(SPI_CRCPR)(I2S模式下不使用&#xff09; 6、SPI Rx CRC寄存器(SPI_RXCRCR)(I2S模式下不…

vue设计与实现-框架设计

权衡的艺术 命令式和声明式 视图层框架通常分为命令式和声明式&#xff0c;各有优缺。jquery是一种命令式框架。命令式框架关注过程&#xff0c;而声明式框架关注结果。对于vue来说&#xff0c;过程被vue封装了&#xff0c;所以vue内部是命令式的&#xff0c;但vue暴露给用户…

CSDN充值、收费、会员

现在在CSDN上查阅资料经常碰到需要充值或变成会员才能继续阅读的情况&#xff0c;一直以为是博客作者为了赚钱而设置的&#xff0c;今天才知道原来是CSDN弄的&#xff0c;因为我在不登录的情况下查看自己的博文也需要充钱&#xff01;我可没有做过任何设置。

ElasticSearch7.10-分词器

文章目录 分词器1.字符过滤器1.介绍2.过滤html标签3.mappings过滤规则&#xff08;屏蔽非文明用语&#xff09;4.正则替换 2.自定义分词器1.代码2.查询 3.中文分词器1.下载ik分词器7.10.0版本&#xff08;跟es对应&#xff09;2.应用ik分词器1.进入插件目录下创建一个ik目录2.将…

Linux之ARM(MX6U)裸机篇----6.BSP工程管理实验

一&#xff0c;BSP工程管理 定义&#xff1a;是为了模块化整理代码&#xff0c;相同属性的文件存放在同一个目录下。 ①先mkdir多个文件夹er ②把共同.h文件转移到指定文件夹下 二&#xff0c;启动文件 .global _start /* 全局标号 *//** 描述&#xff1a; _start函数&am…

【kubernetes组件合集】深入解析Kubernetes组件之三:client-go

深入解析Kubernetes组件之三&#xff1a;client-go 目录 深入解析Kubernetes组件之三&#xff1a;client-go 引言 1. client-go简介 2. client-go的功能 2.1 资源操作 2.2 资源监听 2.3 认证和授权 2.4 错误处理和重试 2.5 扩展性和定制化 3. 使用client-go与Kubern…

【门铃工作原理】2021-12-25

缘由关于#门铃工作原理#的问题&#xff0c;如何解决&#xff1f;-嵌入式-CSDN问答 4 RST&#xff08;复位&#xff09;当此引脚接高电平时定时器工作&#xff0c;当此引脚接地时芯片复位&#xff0c;输出低电平。 按钮按下给电容器充电并相当与短路了R1改变了频率&#xff0c;按…

html+css+js网页设计 美食 美食3个页面(带js)

htmlcssjs网页设计 美食 美食3个页面(带js) 网页作品代码简单&#xff0c;可使用任意HTML辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xff09;。 获取源码 1&…

jenkins修改端口以及开机自启

修改Jenkins端口 方式一&#xff1a;通过配置文件修改&#xff08;以CentOS为例&#xff09; 找到配置文件&#xff1a;在CentOS系统中&#xff0c;通常可以在/etc/sysconfig/jenkins文件中修改Jenkins的配置。如果没有这个文件&#xff0c;也可以查看/etc/default/jenkins&…