qt 线程状态机实现并发自动任务

这篇具有很好参考价值的文章主要介绍了qt 线程状态机实现并发自动任务。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、状态机类文章来源地址https://www.toymoban.com/news/detail-536189.html

  1. 头文件 MyStateMachine.h
#ifndef MYSTATEMACHINE_H
#define MYSTATEMACHINE_H

#include <QStateMachine>
#include "ActionTask.h"
#include <QObject>
#include <QFinalState>

class MyStateMachine:public QObject
{
   
    Q_OBJECT
public:
    explicit MyStateMachine(QObject *parent = nullptr);
    ~MyStateMachine();
signals:
    void sigToWorkState();

    void sigToIdleState();


public slots:
    void onStart();
     void onStop();

    void onTask();

    void onToIdleState();


private:
    void initSlot();

private:
    QThread* m_thread;
    ActionTask* m_worker;
    QState* workState;
    QState* idleState;
    QFinalState *finalState;
    QStateMachine  *m_achine;
};

#endif // MYSTATEMACHINE_H

  1. 状态机 cpp
#include "MyStateMachine.h"
#include "qdebug.h"
#include "qeventloop.h"
#include <QEvent>
#include "global.h"

MyStateMachine::MyStateMachine(QObject *parent)
    : QObject{
   parent}
{
   
    // 创建一个子线程 for state1
    m_thread = new QThread();
    m_worker = new ActionTask();
    m_worker->moveToThread(m_thread);

    // 创建状态机
    m_achine = new QStateMachine();
    workState = new QState();
    idleState = new QState();
    finalState = new QFinalState();

    // 将任务完成状态添加到工作状态中
    idleState->addTransition(this, &MyStateMachine::sigToWorkState, workState);
    workState->addTransition(this, &MyStateMachine::sigToIdleState, idleState);

    workState->addTransition(m_worker, &ActionTask::sigFinished, idleState);

    connect(finalState, &QState::exited, this, [this](){
   
        emit gSignal.sigLog

到了这里,关于qt 线程状态机实现并发自动任务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 多线程并发和多任务并行的小结

    一、多线程并行的一点小结 1.无论是thread::spawn还是tokio::spawn,都是创建一个线程或者任务去执行闭包的函数体。thread::spawn接受一个闭包作为参数,并返回一个 JoinHandle,其中 T 是闭包的返回类型。创建的新线程将在后台运行,并执行闭包中的代码。 2.多线程并行:其他的高级

    2024年02月10日
    浏览(46)
  • C++语言Qt实现 实时任务调度仿真软件 任务参数可配置和随机生成支持多核调度

    我遇到个需求: 目标: 开发一个实时任务调度仿真软件,我们在学习操作系统这门课时候,经常需要观察任务动态调度情况,来更好的直观学习操作系统任务调度过程和调度算法。 内部原理: 操作系统任务调度实际上是一个有限状态机,任务的各种状态不断的转换过程,我

    2023年04月25日
    浏览(40)
  • 高级进阶多线程——多任务处理、线程状态(生命周期)、三种创建多线程的方式

    Java中的多线程是一个同时执行多个线程的进程。线程是一个轻量级的子进程,是最小的处理单元。多进程和多线程都用于实现多任务处理。 但是,一般使用多线程而不是多进程,这是因为线程使用共享内存区域。它们不分配单独的内存区域以节省内存,并且线程之间的上下

    2024年02月13日
    浏览(43)
  • Qt多线程开启定时任务

    多线程执行一些耗时操作,并且需要固定时间去轮询。

    2024年02月12日
    浏览(41)
  • 在QT中使用多线程并发服务器(C++)

    什么是多线程并发服务器?在QT里如何使用多线程并发服务器呢? 多线程并发服务器是一种网络服务器设计,它能够同时处理多个客户端的请求。在多线程服务器中,主线程负责监听和接受来自客户端的连接请求,每当有一个新的连接请求到来时,服务器就会创建一个新的线

    2024年04月11日
    浏览(41)
  • 【linux 多线程并发】多任务调度器,调度策略时间片轮转,先进先出,多种实时任务的策略,内核级最高优先级调度策略

    ​ 专栏内容 : 参天引擎内核架构 本专栏一起来聊聊参天引擎内核架构,以及如何实现多机的数据库节点的多读多写,与传统主备,MPP的区别,技术难点的分析,数据元数据同步,多主节点的情况下对故障容灾的支持。 手写数据库toadb 本专栏主要介绍如何从零开发,开发的

    2024年02月03日
    浏览(56)
  • 【linux 多线程并发】线程退出自动清理函数的使用,释放线程申请的资源,异常退出自动调用

    ​ 专栏内容 : 参天引擎内核架构 本专栏一起来聊聊参天引擎内核架构,以及如何实现多机的数据库节点的多读多写,与传统主备,MPP的区别,技术难点的分析,数据元数据同步,多主节点的情况下对故障容灾的支持。 手写数据库toadb 本专栏主要介绍如何从零开发,开发的

    2024年02月02日
    浏览(51)
  • Go学习圣经:Go语言实现高并发CRUD业务开发

    现在 拿到offer超级难 ,甚至连面试电话,一个都搞不到。 尼恩的技术社群中(50+),很多小伙伴凭借 “左手云原生+右手大数据”的绝活,拿到了offer,并且是非常优质的offer, 据说年终奖都足足18个月 。 第二个案例就是:前段时间,一个2年小伙伴希望涨薪到18K, 尼恩把

    2024年02月11日
    浏览(55)
  • 各个语言运行100万个并发任务需要多少内存?

    原文链接:https://pkolaczk.github.io/memory-consumption-of-async/ Github项目地址:https://github.com/pkolaczk/async-runtimes-benchmarks 在这篇博客文章中,我深入探讨了异步和多线程编程在内存消耗方面的比较,跨足了如Rust、Go、Java、C#、Python、Node.js 和 Elixir等流行语言。 不久前,我不得不对几个

    2024年02月07日
    浏览(48)
  • 全网最强,Python+Appium+pytest自动化测试,多设备并发+多线程(实战详细)

    Appium+python 实现单设备的 app 自动化测试 启动 appium server,占用端口 4723; 电脑与一个设备连接,通过 adb devices 获取已连接的设备; 在 python 代码当中,编写启动参数,通过 pytest 编写测试用例,来进行自动化测试。 若要多设备并发,同时执行自动化测试 需要: 确定设备个数

    2024年02月02日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包