首页 > 其他分享 >多线程案例

多线程案例

时间:2023-11-13 23:11:05浏览次数:33  
标签:include thread void 案例 ui subthread 多线程 MainWindow

111200

 

 

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "subthread.h"
#include <QThread>
namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private slots:
    void on_btn_clicked();
    void receiveData(int cd);

private:
    Ui::MainWindow *ui;
        QThread *thread;
};

#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "subthread.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    thread=new QThread();
    subthread *st=new subthread();
    st->moveToThread(thread);
    connect(thread,QThread::finished,st,subthread::deleteLater);
    connect(thread,QThread::started,st,subthread::Run);
    connect(st,subthread::sendData,this,MainWindow::receiveData);


}

MainWindow::~MainWindow()
{
    delete ui;
    thread->deleteLater();
}

void MainWindow::on_btn_clicked()
{
    thread->start();
    ui->btn->setDisabled(true);
}

void MainWindow::receiveData(int cd)
{
    ui->textEdit1->append(QString::number(cd));
}
#ifndef SUBTHREAD_H
#define SUBTHREAD_H

#include <QObject>

class subthread : public QObject
{
    Q_OBJECT
public:
    explicit subthread(QObject *parent = nullptr);

signals:
    void sendData(int cnt);

public slots:
    void Run();
};

#endif // SUBTHREAD_H
#include "subthread.h"
#include <QThread>
subthread::subthread(QObject *parent) : QObject(parent)
{

}

void subthread::Run()
{

    int cnt=10;
    while(cnt>0)
    {
    emit sendData(cnt--);
        QThread::msleep(100);
    }
    QThread::currentThread()->quit();
}






标签:include,thread,void,案例,ui,subthread,多线程,MainWindow
From: https://www.cnblogs.com/dq0618/p/17830559.html

相关文章

  • 全志R128应用开发案例——获取真随机数
    获取真随机数本文案例代码下载地址获取真随机数案例代码https://www.aw-ol.com/downloads?cat=24R128内置了TRNG,一个真随机数发生器,随机源是8路独立的环形振荡器,由模拟器件电源噪声产生频率抖动,用低频始终重采样,然后进行弹性抽取和熵提取处理,最终输出128bit真随......
  • JavaSE day06【排序查找算法,Map集合,集合的嵌套,斗地主案例】测评题
    选择题题目1(多选):下列关于TreeSet集合排序的原理正确的是()选项:​ A.排序方法如果返回的是小于0,代表的是当前元素较小,需要存放在左边​ B.排序方法如果返回的是大于0,代表的是当前元素较大,需要存放在右边​ C.排序此方法如果返回的是0,代表的是当前元......
  • 斗地主案例 Console version
    packagepers.landlord_fighting.thj;/*按照斗地主的规则,完成洗牌发牌的动作。要求完成以下功能:准备牌:组装54张扑克牌洗牌:54张牌顺序打乱发牌:三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。看牌:查看三人各自手中的牌(按照牌的大小排序)、底牌规则:手中扑克牌从大......
  • 萤石网络云平台服务人民网“数造新实体”案例库
    当前,科技水平不断进步,数字经济已经逐渐走入国人的生活,成为中国经济高质量发展的重要引擎。近期,人民网数字经济研究中心就启动了“数造新实体——数字技术赋能实体经济(2023)”课题项目案例征集活动。萤石网络所推出的萤石开放平台音视频PaaS服务成功入选案例库。自萤石网络创......
  • Netty(四)NIO多线程优化
    Netty(四)NIO多线程优化​ 前面的代码都只有一个选择器,没有充分利用多核CPU,因此可以分两组选择器boss:单线程配一个选择器,专门处理accept事件,不负责数据的读写worker:创建CPU核心数的线程,每个线程配一个选择器,轮流处理read事件1多线程问题分析关键是这一部分的代码,需要保......
  • 每个.NET开发都应掌握的C#多线程知识点
    上篇文章讲述了C#特性(Attribute)知识点,本文将介绍多线程的知识点。多线程编程是现代软件开发中的重要组成部分,它能够充分利用多核处理器,提高应用程序的性能和响应性。C#作为.NET开发的主要语言,提供了强大的多线程支持。本文将介绍C#多线程知识点,帮助.NET开发者更好地应对多线程编程......
  • 《大型网站技术架构--核心原理与案例分析》阅读笔记
    这本书组织的很不错,语言精练,篇幅也不长,对网站架构的要点讲的狠清楚透彻,思路清晰。主要围绕架构的五个要点:性能、高可用、伸缩性、扩展性、安全性。令人印象非常深刻。而且李智慧老师深谙职场之道,后面一些关于技术人的建议也让人受用无穷。事物发展到一定阶段,就会拥有自身的发展冲......
  • 多线程锁
    常见锁介绍synchronized锁的八中情况packagecom.shaonian.juc.more_thread_lock;importjava.util.concurrent.TimeUnit;classPhone{publicstaticsynchronizedvoidsendSMS()throwsException{//停留4秒TimeUnit.SECONDS.sleep(4);......
  • hmac使用场景及nodejs案例
    HMAC(Hash-basedMessageAuthenticationCode,基于哈希的消息认证码)是一种基于哈希函数的安全认证机制,用于确保数据的完整性和身份认证。它通过将密钥与消息进行哈希运算,生成一个固定长度的哈希值,用于验证数据的真实性和完整性。原理:使用一个密钥(Key)和一个哈希函数(如SHA-256)生成一个......
  • 【.NET】多线程:自动重置事件与手动重置事件的区别
    在多线程编程中,如果每个线程的运行不是完全独立的。那么,一个线程执行到某个时刻需要知道其他线程发生了什么。嗯,这就是所谓线程同步。同步事件对象(XXXEvent)有两种行为:1、等待。线程在此时会暂停运行,等待其他线程发出信号才继续(等你约);2、发出信号。当前线程发出信号,其他正在等待......