首页 > 编程知识 正文

qt socket 多线程(qt多线程创建多个不同的线程)

时间:2023-05-03 18:54:27 阅读:75728 作者:1812

另一方面,方案背景往往在进行数据接收时,会面临接收多个数据源的数据,如蓝牙设备、RS232通信设备、TCP/IP网络设备。 为了统一,目标数据的数据组织形式往往相同,因此目标数据的分析方式往往相同。 因此,可以设计多线程数据接收器来接收来自不同数据源的数据。

二、实现思路(1)让QStringList创建全局变量【数据池】,使用QThread创建读取数据池数据的线程,读取数据后,发出“读取了一个数据”的信号

)2)由于数据池位于APP应用程序中,且往往只存在一个具体实例,因此使用单实例模式实现。

三、具体代码实现//数据接收器. h

# ifndefdatareceiver _ h # definedatareceiver _ h # includeqobject # includeqthread # includeqmutex/*数据池*/classdatatatad classdatareceiver : publicqthread { q _ object public ://数据接收器单实例staticdatareceiver * getinstance (void explicitdatareceiver (q object * parent=nullptr ); 语音停止(; 保护性: void run () override; 隐私: qmutex mutex; 信号:语音数据(qstring data ); (; # endif//数据接收程序_ h//数据接收程序. CPP

# include ' data receiver.h ' qstringlistdatapool :3360 list=qstring list (; q _ global _ static (数据接收器, s_DataReceiver )数据接收器*数据接收器: getinstance ) ) returns _ data receiver 3603360 getinstance ) ) retudar } 数据接收器:3360数据接收器(q object * parent ) : q thread (parent ) ) voiddatareceiver3360:stop ) thi int } voidatareceiver isInterruptionRequested (() ) { mutex.lock ); if (! DataPool:list.isEmpty () qstring data=data pool :3360 list.take first ); 电子数据(数据; } mutex.unlock (; //短睡眠线程msleep(1); (四、使用方法1、数据池数据输入

获取多设备源数据后,直接调用。

data pool :3360 list.append (/*来自不同数据源的数据)/); 将数据添加到数据池

2、数据池的数据输出

调用:

数据接收器:3360 getinstance (; 可以获取数据接收器的单个实例,将oneDataReady信号与槽函数相关联,然后通过槽函数进行数据分析和进一步处理。

【备注】:留言,好吧,很多批评,蟹蟹!

参考资料

33558 www.qtcn.org/BBS/read-htm-tid-58314.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。