QT多线程的简单使用,主线程发一份数据,子线程收两份数据
阅读原文时间:2023年07月09日阅读:1

先看效果图,示例发送数据“Hello World”

主线程:0x16f54aeda20,另两个子线程分别是0x4f1baff690、0x4f1baff6a0

因为在子线程中加了200ms、400ms延迟,所以打印是有先后顺序的

核心代码也就一丢丢。代码逻辑就是使用信号与槽使用线程之间产生联系

1 MfBusiness::MfBusiness(QObject *parent) : QObject(parent)
2 {
3 connect(&se,&MfSendData::Sgl_Send,&re1,&MfRecvData1::On_Recv);
4 connect(&se,&MfSendData::Sgl_Send,&re2,&MfRecvData2::On_Recv);
5 re1.moveToThread(&th1);
6 re2.moveToThread(&th2);
7 th1.start();
8 th2.start();
9 }
10 void MfBusiness::DecodeData(QString str)
11 {
12 QByteArray data=str.toUtf8();
13 se.HandleData(data);
14 qDebug()<<"main";
15 qDebug()<<str;
16 qDebug()<<QThread::currentThread();
17 }

复杂的事情,我们要简单做,滴滴滴