Qt封装一个类管理moveToThread( )正确的开启多线程、安全的退出线程的实例

2023-11-16

看本篇的文章基础在于你已经懂得了简单的利用moveToThread的方法创建出一个线程.
不会的话可以查看本篇博客

总结:QT 多线程(处理密集时的界面响应保持)
运用:

	MultMoveToThread *testObject = new MultMoveToThread(4);
    testObject->createItem();
    testObject->startMultThread();

.h

#ifndef MULTMOVETOTHREAD_H
#define MULTMOVETOTHREAD_H

#include <QThread>
#include <QList>
#include "myobject.h"
class MultMoveToThread
{
public:
    MultMoveToThread(int iCount);
    ~MultMoveToThread();    
    void startMultThread();
privateint iThreadCount;//开启的线程个数
    QList<MyObject*> myObjectList;//MyObject是我封装的一个继承QOBject的一个类
    QList<QThread*> threadList;
};

#endif // MULTMOVETOTHREAD_H

.cpp

#include "multmovetothread.h"

MultMoveToThread::MultMoveToThread(int iCount)
{
    iThreadCount = iCount;
}

MultMoveToThread::~MultMoveToThread()
{
    for(int i = 0; i < iThreadCount; i++)
    {
        threadList.value(i)->quit();
        threadList.value(i)->wait();
        myObjectList.value(i)->deleteLater();
        threadList.value(i)->deleteLater();
    }
}

void MultMoveToThread::startMultThread()
{
	//开始创建出函数
    for(int i = 0;i < iThreadCount;i++)
    {
        MyObject *myObject = new MyObject();
        QThread  *thread = new QThread();        
        myObject->doAction();//这个函数里放线程主要做的事
        
        myObjectList.append(myObject);        
        threadList.append(thread);
        
        //这两步执行完之后, myObject里的实现函数就是通过线程来做的
        myObject->moveToThread(thread);
        threadList.value(i)->start();
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt封装一个类管理moveToThread( )正确的开启多线程、安全的退出线程的实例 的相关文章

随机推荐

  • 【FreeRTOS学习计划】 第九节 支持时间片

    FreeRTOS 与隔壁的 RT Thread 和 C OS 一样 都支持时间片的功能 所谓时间片就是同一个优先级下可以有多个任务 每个任务轮流地享有相同的 CPU 时间 享有 CPU 的时间我们叫时间片 在 RTOS 中 最小的时间单位为
  • 随笔:vscode-latex中文配置

    vscode用的久了 感觉确实比texstudio好用 question 1 vscode latex中文配置 vscode安装LaTeX Workshop Extension 默认latexmk就已经可以满足写英文paper的要求了 因为
  • 【STM32】基于STM32F407实现串口通信

    目录 一 通用同步异步收发器 USART 1 USART 简介 2 USART 功能说明 3 USART框图 二 基于HAL库实现串口通信 1 工程创建 2 HAL库UART函数库介绍 3 USART接收与发送 三 总结 四 参考 一 通用
  • vSphere 7.0+Replication 8.3安装配置

    esxi嵌套后建立的VM无法与其它未嵌套的VM通讯 需要更改物理ESXi的网络配置 接受混杂模式 接受mac变更等三个选项 更改kernel网络的配置 勾选vsphere replication 否则配置VM的复制策略时会报错 请验证源主机
  • 嘘!市面上短视频(douyin)“去水印”的工具原来是这样实现的

    现在视频号非常火热 之前在做抖音和快手的人就直接把之前的视频直接搬运过来了 但是从抖音app下载的视频都是带官方水印的 这个是怎么去掉的 哦 不对 他们应该都有保留原视频的吧 但是还有很多人是直接搬运别人的视频的 那他们是怎么去水印的呢 其
  • Cytoscape安装后无法打开

    Cytoscape是一款图形化显示网络并进行分析和编辑的软件 从官网下载了最新的版本 3 7 2 由于Cytoscape需要Java环境才能运行 如果你的电脑还没有Java环境 在安装时最新的3 7 2版本会自动下载并安装Java好环境 自
  • 《深入理解计算机系统》实验二Bomb Lab

    前言 深入理解计算机系统 实验二Bomb Lab的下载和官网文档的机翻请看 深入理解计算机系统 实验二Bomb Lab下载和官方文档机翻 用的调试工具是gdb 用到的指令如下 指令 作用 break 打断点 disassemble 查看汇编
  • Spring Boot中ApplicationRunner与CommandLineRunner

    在实际的开发场景中 经常需要在运行环境之前执行一些类似于读取配置文件 数据库连接操作等 Spring Boot提供了ApplicationRunner和CommandLineRunner来帮助我们实现这些需求 时机 他们执行的时机是为容器启
  • 搜索引擎批量查询控制脚本

    seo的工作需要我们会经常查询gg和百度的结果 收录也好排名也好 所以在做查询脚本时一定要控制查询时间来防止百度封锁禁止你的查询 当然有两种方法 1 不断变换代理 当然代价较大 2 控制查询请求的间隔 3 前两者结合使用 一般的脚本我们从性
  • 利用 MLP(多层感知器)和 RBF(径向基函数)神经网络解决的近似和分类示例问题(Matlab代码实现)

    个人主页 研学社的博客 欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 1 径向基神经网络
  • weixin支付

    前端
  • vue如何通过配置proxy解决跨域问题

    原本在用axios做数据请求的时候我就打算用CORS解决跨域问题 奈何跟我做配合的后端成员用natapp做内网穿透给到的数据接口没有在服务器做CORS跨域需要的相关请求头配置 那这个时候就只能在前端解决跨域问题 在vue中配置代理proxy
  • kdj超卖_今天给大家分享一个(KDJ指标买卖技术)附图解

    KDJ指标买卖技术 KDJ是一个超买超卖指标 对股价高位低位的研判 根据KDJ的取值 我们将KDJ区域分为 1 超买区 K D J这三值在20以下为超卖区 是买入信号 2 超卖区 K D J这三值在80以上为超买区 是卖出信号 3 徘徊区
  • jdbc连接mysql8驱动详解

    当使用 mysql connector java 8 以上版本时 会出现很多问题 下面将给出一些解决方案 jdbc连接通用配置 1 JDBC driver 由 com mysql jdbc Driver 改为 com mysql cj jd
  • pytorch安装包

    https pan baidu com s 1R67Sq7V Pa33oVWRt1iOpQ
  • PostCSS的配置文件

    Vue中使用Vant组件库时 需要使用rem单位 使用了以下两个工具 postcss pxtorem 是一款 postcss 插件 用于将单位转化为 rem lib flexible 用于设置 rem 基准值 在使用PostCSS 时 提供
  • 区块链在供应链领域的应用案例

    案例一 布比物链构建基于区块链的有品质保证且诚信公证的供应链系统 面对众多供应链领域存在的问题 布比基于区块链技术构建了物链 物链充分利用区块链高可信共识 低成本安全 分布式账本和高效链接多中心的特点 整合先进的物联网技术 推出了 品质驱动
  • 环境—虚拟机Ubuntu18的VScode出现XHR:timeout

    解决 Error while fetching extensions XHR timeout VScode改代理 本台虚拟机 测试无效 windows下改host 本台虚拟机 测试无效 windows下改时区服务器 本台虚拟机 测试有效 D
  • 弱口令漏洞与验证码绕过——渗透day04

    目录 一 基于远程服务的弱口令攻击 一 服务暴力破解软件 二 实验 二 基于web的弱口令测试 一 基于表单的暴力破解 二 验证码绕过 on client 1 通过Script Blocker Ultimate插件绕过验证码 2 通过bur
  • Qt封装一个类管理moveToThread( )正确的开启多线程、安全的退出线程的实例

    看本篇的文章基础在于你已经懂得了简单的利用moveToThread的方法创建出一个线程 不会的话可以查看本篇博客 总结 QT 多线程 处理密集时的界面响应保持 运用 MultMoveToThread testObject new MultM