尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Qt Thread and Worker

Qt Thread and Worker
📅 发布时间:2026/6/19 18:32:05

Qt Thread and Worker

2025-12-07 20:43  @学无止境  阅读(0)  评论(0)    收藏  举报
#ifndef QUEUETHREAD_H
#define QUEUETHREAD_H#include <QDebug>
#include <QMutex>
#include <QObject>
#include <QQueue>
#include <QThread>class QueueThread : public QThread {Q_OBJECTpublic:QueueThread();private:QMutex m_mutex;QQueue<int> m_queue;protected:void run();public:void appendData(int data);public slots:void slot_receiveData(int data);
};#endif  // QUEUETHREAD_H
#include "queuethread.h"QueueThread::QueueThread() {//  工作在主线程qDebug() << QThread::currentThreadId() << " " << __func__ << endl;
}void QueueThread::run() {while (true) {QMutexLocker locker(&m_mutex);//  工作在子线程if (!m_queue.isEmpty()) {int head = m_queue.dequeue();qDebug() << QThread::currentThreadId() << " " << __func__ << " " << head << endl;}}
}void QueueThread::appendData(int data) {QMutexLocker locker(&m_mutex);//  工作在主线程qDebug() << QThread::currentThreadId() << " " << __func__ << endl;m_queue.enqueue(data);
}void QueueThread::slot_receiveData(int data) {QMutexLocker locker(&m_mutex);//  工作在主线程qDebug() << QThread::currentThreadId() << " " << __func__ << endl;m_queue.enqueue(data);
}

 

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#ifndef QUEUEWORKER_H
#define QUEUEWORKER_H#include <QDebug>
#include <QMutex>
#include <QObject>
#include <QQueue>
#include <QThread>class QueueWorker : public QObject {Q_OBJECTpublic:explicit QueueWorker(QObject* parent = nullptr);private:QMutex m_mutex;QQueue<int> m_queue;public:void appendData(int data);signals:public slots:void doWork();void slot_doWork(int data);
};#endif  // QUEUEWORKER_H
#include "queueworker.h"QueueWorker::QueueWorker(QObject* parent): QObject(parent) {//  工作在主线程qDebug() << QThread::currentThreadId() << " FFF " << __func__ << endl;
}void QueueWorker::appendData(int data) {QMutexLocker locker(&m_mutex);// 工作在主线程qDebug() << QThread::currentThreadId() << " FFF " << __func__ << endl;m_queue.enqueue(data);
}void QueueWorker::doWork() {QMutexLocker locker(&m_mutex);// 工作在子线程if (!m_queue.isEmpty()) {int head = m_queue.dequeue();qDebug() << QThread::currentThreadId() << " FFF " << __func__ << " " << head << endl;}
}void QueueWorker::slot_doWork(int data) {// 工作在子线程qDebug() << QThread::currentThreadId() << " FFF " << __func__ << " " << data << endl;
}

 

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

m_queueThread2 = new QueueThread;connect(this, &MainWindow::sig_sendData, m_queueThread2, &QueueThread::slot_receiveData);m_queueThread2->start();m_queueThread = new QThread;m_queueWorker = new QueueWorker;m_queueWorker->moveToThread(m_queueThread);connect(this, &MainWindow::sig_doWork, m_queueWorker, &QueueWorker::doWork);connect(this, &MainWindow::sig_doWork2, m_queueWorker, &QueueWorker::slot_doWork);m_queueThread->start();m_timer = new QTimer;// connect(m_timer, SIGNAL(timeout()), this, SLOT(on_Timer()));// m_timer->start(100);

connect(m_timer, SIGNAL(timeout()), this, SLOT(on_Timer2()));m_timer->start(100);

void MainWindow::on_Timer() {static int i = 0;i++;/// method 1// m_queueWorker->appendData(i);// emit sig_doWork();/// method 2
    emit sig_doWork2(i);
}void MainWindow::on_Timer2() {static int i = 0;i++;/// method 1// m_queueThread2->appendData(i);/// method 2
    emit sig_sendData(i);
}

不知道这样总结的对不对?

 

相关新闻

  • 2025成都最新旧房装修改造公司 TOP5 评测!金牛等十区装修品牌行业数据市场口碑及选择指南,环保整装 + 品质施工权威榜单发布,匠心赋能焕新理想居家环境
  • 2025最新成都二手房装修公司top5推荐!成都优质家装品牌权威榜单发布,环保健康与品质工艺双保障助力理想家居焕新
  • 【3FS】条带化

最新新闻

  • 2026杭州黄金回收机构测评:全域正规门店排名优选 - 奢侈品回收评测
  • 期权定价实战:从BSM模型到Python代码实现
  • FanControl:Windows平台专业风扇智能温控的完整解决方案
  • 建构之法阅读笔记5
  • 别被线上虚高报价骗了!广州正规回收认准收的顶,报价即成交价 - 奢侈品回收测评
  • Honey Select 2终极游戏增强补丁:一键解锁完整游戏体验的完整解决方案

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号