一种QT线程优化方法、装置、计算机设备及存储介质制造方法及图纸

技术编号:35837213 阅读:10 留言:0更新日期:2022-12-03 14:08
本发明专利技术实施例公开了一种QT线程优化方法、装置、计算机设备及存储介质。所述方法包括:调用Controller函数;利用所述Controller函数将信息添加到MessageQueue列队中,并发送信号;在Worker的槽函数中判断所述信息是否被移除;若否,则判断所述信息是否是延迟信息;若否,则调用Callback对所述信息进行处理;若是,则启动定时器;在TimerEvent函数中获取所述信息;判断所获取的信息是否被移除;若否,则执行所述调用Callback对所述信息进行处理。通过实施本发明专利技术实施例的方法可实现便于创建一个具有循环队列和异步共享的线程,具有使用简单,容易理解等特点。易理解等特点。易理解等特点。

【技术实现步骤摘要】
一种QT线程优化方法、装置、计算机设备及存储介质


[0001]本专利技术涉及计算机,更具体地说是指一种QT线程优化方法、装置、计算机设备及存储介质。

技术介绍

[0002]Qt是诺基亚开发的一个跨平台的C++图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。并且Qt是完全面向对象的,很容易扩展,并且允许真正地组件编程;使用Qt开发的软件,相同的代码可以在任何支持的平台上编译与运行,而不需要修改源代码。
[0003]现有三种方法使用QT线程,第一种是定义类Thread继承QThread基类;重写run方法,在run方法中处理业务逻辑;创建Thread对象,调用start方法开启线程;第二种是定义类Runnable继承QRunnable基类;重写run方法,在run方法中处理业务逻辑;创建QRunnable对象放到QThreadPool中运行;第三种是定义类Worker继承QObject基类;在Worker中定义槽函数,槽函数运行在线程中,用于处理业务逻辑;定义类Controller继承QObject基类;在Controller中定义信号;在Controller类中创建Worker对象,创建QThread对象;将Controller对象的信号和Worker对象的槽函数绑定;调用Worker对象的moveToThread方法,将第五步创建的线程作为参数传入;发送Controller对象的信号。但是在界面应用发展很快的今天,QT作为跨平台软件开发框架,应用比较广泛。为了应用流畅运行,线程是必然选择,QT线程使用方法涉及信号槽、事件队列,子线程和父线程等概念,如果不是对QT线程有深刻理解,容易错误的使用线程。
[0004]因此,有必要设计一种新的方法,实现便于创建一个具有循环队列和异步共享的线程,具有使用简单,容易理解等特点。

技术实现思路

[0005]本专利技术的目的在于克服现有技术的缺陷,提供一种QT线程优化方法、装置、计算机设备及存储介质。
[0006]为实现上述目的,本专利技术采用以下技术方案:一种QT线程优化方法,包括:
[0007]调用Controller函数;
[0008]利用所述Controller函数将信息添加到MessageQueue列队中,并发送信号;
[0009]在Worker的槽函数中判断所述信息是否被移除;
[0010]若所述信息未被移除,则判断所述信息是否是延迟信息;
[0011]若所述信息不是延迟信息,则调用Callback对所述信息进行处理;
[0012]若所述信息是延迟信息,则启动定时器;
[0013]在TimerEvent函数中获取所述信息;
[0014]判断所获取的信息是否被移除;
[0015]若所获取的信息未被移除,则执行所述调用Callback对所述信息进行处理。
[0016]其进一步技术方案为:所述调用Controller函数之前,还包括:
[0017]定义类CBack继承类Callback;
[0018]重写Callback函数处理信息;
[0019]创建Controller对象,创建CBack对象;
[0020]将CBack对象传入Controller对象;
[0021]调用Controller对象的sendMessage函数。
[0022]其进一步技术方案为:所述调用Controller函数,包括:
[0023]调用Controller函数的handleMessage。
[0024]其进一步技术方案为:所述调用Callback对所述信息进行处理,包括:
[0025]调用Callback的handleMessage对所述信息进行处理。
[0026]其进一步技术方案为:所述启动定时器,包括:
[0027]调用QObject::start Time启动定时器。
[0028]其进一步技术方案为:所述判断所获取的信息是否被移除之后,还包括:
[0029]若所获取的信息被移除,则执行结束步骤。
[0030]本专利技术还提供了一种QT线程优化装置,包括:
[0031]第一调用单元,用于调用Controller函数;
[0032]添加单元,用于利用所述Controller函数将信息添加到MessageQueue列队中,并发送信号;
[0033]第一判断单元,用于在Worker的槽函数中判断所述信息是否被移除;
[0034]第二判断单元,用于若所述信息未被移除,则判断所述信息是否是延迟信息;
[0035]第二调用单元,用于若所述信息不是延迟信息,则调用Callback对所述信息进行处理;
[0036]启动单元,用于若所述信息是延迟信息,则启动定时器;
[0037]信息获取单元,用于在TimerEvent函数中获取所述信息;
[0038]第三判断单元,用于判断所获取的信息是否被移除;若所获取的信息未被移除,则执行所述调用Callback对所述信息进行处理。
[0039]其进一步技术方案为:包括:
[0040]定义单元,用于定义类CBack继承类Callback;
[0041]重写单元,用于重写Callback函数处理信息;
[0042]创建单元,用于创建Controller对象,创建CBack对象;
[0043]传入单元,用于将CBack对象传入Controller对象;
[0044]函数调用单元,用于调用Controller对象的sendMessage函数。
[0045]本专利技术还提供了一种计算机设备,所述计算机设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现上述的方法。
[0046]本专利技术还提供了一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法。
[0047]本专利技术与现有技术相比的有益效果是:本专利技术通过创建线程,并进行循环判断,直至消息被移除,且对于延迟信息启动定时器,进行异步共享,使用者只需两行代码即可创建一个具有循环队列和异步共享的线程,实现便于创建一个具有循环队列和异步共享的线
程,具有使用简单,容易理解等特点。
[0048]下面结合附图和具体实施例对本专利技术作进一步描述。
附图说明
[0049]为了更清楚地说明本专利技术实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0050]图1为本专利技术实施例提供的一种QT线程优化方法的流程示意图;
[0051]图2为本专利技术另一实施例提供的一种QT线程优化方法的流程示意图;
[0052]图3为本专利技术实施例提供的一种本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种QT线程优化方法,其特征在于,包括:调用Controller函数;利用所述Controller函数将信息添加到MessageQueue列队中,并发送信号;在Worker的槽函数中判断所述信息是否被移除;若所述信息未被移除,则判断所述信息是否是延迟信息;若所述信息不是延迟信息,则调用Callback对所述信息进行处理;若所述信息是延迟信息,则启动定时器;在TimerEvent函数中获取所述信息;判断所获取的信息是否被移除;若所获取的信息未被移除,则执行所述调用Callback对所述信息进行处理。2.根据权利要求1所述的一种QT线程优化方法,其特征在于,所述调用Controller函数之前,还包括:定义类CBack继承类Callback;重写Callback函数处理信息;创建Controller对象,创建CBack对象;将CBack对象传入Controller对象;调用Controller对象的sendMessage函数。3.根据权利要求1所述的一种QT线程优化方法,其特征在于,所述调用Controller函数,包括:调用Controller函数的handleMessage。4.根据权利要求1所述的一种QT线程优化方法,其特征在于,所述调用Callback对所述信息进行处理,包括:调用Callback的handleMessage对所述信息进行处理。5.根据权利要求1所述的一种QT线程优化方法,其特征在于,所述启动定时器,包括:调用QObject::start Time启动定时器。6.根据权利要求1所述的一种QT线程优化方法,其特征在于,所述判断所获取的信息是否被...

【专利技术属性】
技术研发人员:陈中文徐林浩姜树红涂庆裕
申请(专利权)人:北斗星通智联科技有限责任公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1