多线程创建系统及方法、多线程处理系统及方法与流程

文档序号:12063462阅读:148来源:国知局
多线程创建系统及方法、多线程处理系统及方法与流程

本发明涉及计算机技术领域,特涉及一种多线程创建系统及方法、多线程处理系统及方法。



背景技术:

现有技术的窗体中,用的是消息队列的方式,而不是用多个线程,这样是为了程序的扩展性。我们按它的框架来写代码,可以实现方便快捷的开发,但是也使得很多应用程序编程接口并不是线程安全的,甚至有些函数不支持在非窗体主线程上是用;可是在所有程序,都有可能需要并行执行。如果不并行,都在窗体主线程中执行,就有可能会等待,而在窗体主程序中做等待,会使得程序变灰色,然后弹出“程序未响应”的系统提示。只有这个等待结束后,程序才能恢复。然而,如果用多线程,又会出现很多的临界区(基本上在窗体的应用程序编程接口都属于临界区了),这样也会使得编程变得很费力。再者,如果线程有多个子线程,在需要释放窗体的时候,也必须等待子线程结束后,才能释放窗体,这样也使得主线程出现等待的现象,然后弹出“程序未响应”的系统提示,所以有必要对这些问题进行解决。



技术实现要素:

本发明的目的是提供一种多线程创建系统及方法、多线程处理系统及方法,所要解决的技术问题是:如何减少临界区,改善程序的流程性,提高用户体验,线程的处理规范化,也可以保证系统稳定性。

本发明解决上述技术问题的技术方案如下:一种多线程创建系统,包括接口模块、窗口对象模块、线程消息队列模块和线程处理模块;

所述接口模块,用于接收外部的窗体对象指令,并传输至窗口对象模块;还用于将窗体对象传输至外部进行显示;

所述窗口对象模块,用于根据窗体对象指令生成窗体对象,同时分别生成创建第一线程消息队列指令、创建第二线程消息队列指令、创建主线程指令和创建子线程指令;还用于根据第一创建成功消息和第二创建成功消息向所述接口模块输出窗体对象;

所述线程消息队列模块,用于根据创建第一线程消息队列指令和创建第二线程消息队列指令分别创建第一线程消息队列和第二线程消息队列,并向窗口对象模块返回第一创建成功消息;

所述线程处理模块,用于根据创建主线程指令和创建子线程指令分别创建主线程和子线程,并向窗口对象模块返回第二创建成功消息。

本发明的有益效果是:通过创建第一线程消息队列、第二线程消息队列、主线程和子线程,能使主线程在第一线程消息队列中保存排序,能使子线程在第二线程消息队列中保存排序,充分实现主线程和子线程进行并行处理;线程处理模块能对主线程和子线程统一管理,使得管理简单而统一,提升稳定性。

在上述技术方案的基础上,本发明还可以做如下改进。

进一步,所述线程处理模块创建主线程和子线程过程中分别向主线程和子线程中植入智能指针。

采用上述进一步方案的有益效果是:主线程和子线程中植入智能指针,通过智能指针能保证主线程和子线程能相对自动处理,使得运行更加流畅和快速。

本发明解决上述技术问题的另一技术方案如下:一种多线程处理系统,包括多线程创建系统及其创建的第一线程消息队列、第二线程消息队列、主线程和子线程;

所述接口模块,所述接口模块,用于接收外部的操作指令,传输至窗口对象模块;还用于对第一处理结果传输至外部进行显示;还用于对第二处理结果传输至外部进行显示;

所述窗口对象模块,用于对操作指令所要求执行的任务进行判断,当判断所要执行的任务需要在线程处理时,提取对应主线程传输至线程消息队列模块,并生成第一处理结果返回接口模块;

所述线程消息队列模块,用于将主线程放入第一线程消息队列进行保存和排序;

所述线程处理模块4,用于读取第一线程消息队列内的主线程,通过主线程进行处理,调取资源执行对应任务,完成任务时向接口模块1返回第二处理结果;完成任务后将子线程放入第二线程消息队列中,通过子线程清除主线程调取的资源,清除窗口对象。

本发明的有益效果是:能使主线程在第一线程消息队列中保存排序,能使子线程在第二线程消息队列中保存排序,充分实现主线程和子线程进行并行处理;线程处理模块能对主线程和子线程统一管理,使得管理简单而统一,提升稳定性,能减少临界区,改善程序的流程性,提高用户体验,线程的处理规范化,也可以保证系统稳定性。

在上述技术方案的基础上,本发明还可以做如下改进。

进一步,所述窗口对象模块对操作指令所要求执行的任务进行判断,当所要执行的任务延时或者执行任务所用的资源只是在线程中,则所要执行的任务需要在线程处理。

采用上述进一步方案的有益效果是:窗口对象模块对操作指令所要求执行的任务进行判断,能提升对延时高的任务或者所用的资源只是在线程中的任务进行高效处理,能对减少临界区,改善程序的流程性,提高用户体验,线程的处理规范化,也可以保证系统稳定性。

进一步,所述接口模块,用于根据第一处理结果生成清理窗口指令,传输至窗口对象模块;还用对清理结束信号进行显示;

所述窗口对象模块,用于根据清理窗口指令调取子线程传输至线程消息队列模块;还用于根据第三处理结果通过主线程隐藏窗体对象;还用于根据第四处理结果清理窗体对象,向接口模块返回清理结束信号;

所述线程消息队列模块,用于将子线程放入第二线程消息队列进行保存和排序,生成第三处理结果返回窗口对象模块;

所述线程处理模块,用于读取第二线程消息队列中的子线程,清除主线程调取的资源,同时关闭子线程;完成任务时向窗口对象模块返回第四处理结果。

采用上述进一步方案的有益效果是:子线程的清理过程与主线程是并行,异步的;用户清理任务只是将窗体隐藏,然后资源清理用子线程处理,子线程得到充分的利用,而又不影响主线程工作;使得释放变动非常流畅和快速。

进一步,所述线程处理模块还用于调取主线程,主线程根据第四处理结果清理清理窗体对象。

采用上述进一步方案的有益效果是:主线程的清理过程能与子线程的清理过程异步并行处理,使得释放变动非常流畅和快速。

本发明解决上述技术问题的另一技术方案如下:一种多线程创建方法,包括以下步骤:

步骤A1.接收外部的窗体对象指令,根据窗体对象指令生成窗体对象,同时分别生成创建第一线程消息队列指令、创建第二线程消息队列指令、创建主线程指令和创建子线程指令;

步骤A2.根据创建第一线程消息队列指令和创建第二线程消息队列指令分别创建第一线程消息队列和第二线程消息队列,并返回第一创建成功消息;根据创建主线程指令和创建子线程指令分别创建主线程和子线程,并返回第二创建成功消息;

步骤A3.根据第一创建成功消息和第二创建成功消息输出窗体对象,将窗体对象传输至外部进行显示。

本发明的有益效果是:通过创建第一线程消息队列、第二线程消息队列、主线程和子线程,能使主线程在第一线程消息队列中保存排序,能使子线程在第二线程消息队列中保存排序,充分实现主线程和子线程进行并行处理;能对主线程和子线程统一管理,使得管理简单而统一,提升稳定性。

在上述技术方案的基础上,本发明还可以做如下改进。

进一步,在步骤A2中,创建主线程和子线程过程中分别向主线程和子线程中植入智能指针。

采用上述进一步方案的有益效果是:主线程和子线程中植入智能指针,通过智能指针能保证主线程和子线程能相对自动处理,使得运行更加流畅和快速。

本发明解决上述技术问题的另一技术方案如下:一种多线程处理方法,包括以下步骤:

步骤B1.接收外部的操作指令,对操作指令所要求执行的任务进行判断,当判断所要执行的任务需要在线程处理时,提取对应主线程传输至第一线程消息队列,并生成第一处理结果传输至外部进行显示;

步骤B2.将主线程放入第一线程消息队列进行保存和排序;

步骤B3.读取第一线程消息队列内的主线程,通过主线程进行处理,调取资源执行对应任务,完成任务时返回第二处理结果传输至外部进行显示;完成任务后还清除主线程调取的资源,清除窗口对象。

本发明的有益效果是:能使主线程在第一线程消息队列中保存排序,能使子线程在第二线程消息队列中保存排序,充分实现主线程和子线程进行并行处理;能对主线程和子线程统一管理,使得管理简单而统一,提升稳定性,能减少临界区,改善程序的流程性,提高用户体验,线程的处理规范化,也可以保证系统稳定性。

在上述技术方案的基础上,本发明还可以做如下改进。

进一步,步骤B1中对操作指令所要求执行的任务进行判断,当所要执行的任务延时或者执行任务所用的资源只是在线程中,则所要执行的任务需要在线程处理。

采用上述进一步方案的有益效果是:对操作指令所要求执行的任务进行判断,能提升对延时高的任务或者所用的资源只是在线程中的任务进行高效处理,能对减少临界区,改善程序的流程性,提高用户体验,线程的处理规范化,也可以保证系统稳定性。

附图说明

图1为本发明一种多线程创建系统的模块框图;

图2为本发明一种多线程创建方法的流程图;

图3为本发明一种多线程处理方法的流程图。

附图中,各标号所代表的部件列表如下:

1、接口模块,2、窗口对象模块,3、线程消息队列模块,4、线程处理模块。

具体实施方式

以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。

如图1所示,一种多线程创建系统,包括接口模块1、窗口对象模块2、线程消息队列模块3和线程处理模块4;

所述接口模块1,用于接收外部的窗体对象指令,并传输至窗口对象模块;还用于将窗体对象传输至外部进行显示;

所述窗口对象模块2,用于根据窗体对象指令生成窗体对象,同时分别生成创建第一线程消息队列指令、创建第二线程消息队列指令、创建主线程指令和创建子线程指令;还用于根据第一创建成功消息和第二创建成功消息向所述接口模块1输出窗体对象;

所述线程消息队列模块3,用于根据创建第一线程消息队列指令和创建第二线程消息队列指令分别创建第一线程消息队列和第二线程消息队列,并向窗口对象模块2返回第一创建成功消息;

所述线程处理模块4,用于根据创建主线程指令和创建子线程指令分别创建主线程和子线程,并向窗口对象模块2返回第二创建成功消息。

通过创建第一线程消息队列、第二线程消息队列、主线程和子线程,能使主线程在第一线程消息队列中保存排序,能使子线程在第二线程消息队列中保存排序,充分实现主线程和子线程进行并行处理;线程处理模块能对主线程和子线程统一管理,使得管理简单而统一,提升稳定性。

上述实施例中,所述线程处理模块4创建主线程和子线程过程中分别向主线程和子线程中植入智能指针;

主线程和子线程中植入智能指针,通过智能指针能保证主线程和子线程能相对自动处理,使得运行更加流畅和快速。

实施例2:

如图1所示,一种多线程处理系统,包括多线程创建系统及其创建的第一线程消息队列、第二线程消息队列、主线程和子线程;

所述接口模块1,用于接收外部的操作指令,传输至窗口对象模块2;还用于对第一处理结果传输至外部进行显示;还用于对第二处理结果传输至外部进行显示;

所述窗口对象模块2,用于对操作指令所要求执行的任务进行判断,当判断所要执行的任务需要在线程处理时,提取对应主线程传输至线程消息队列模块3,并生成第一处理结果返回接口模块1;

所述线程消息队列模块3,用于将主线程放入第一线程消息队列进行保存和排序;

所述线程处理模块4,用于读取第一线程消息队列内的主线程,通过主线程进行处理,调取资源执行对应任务,完成任务时向接口模块1返回第二处理结果;完成任务后将子线程放入第二线程消息队列中,通过子线程清除主线程调取的资源,清除窗口对象。

能使主线程在第一线程消息队列中保存排序,能使子线程在第二线程消息队列中保存排序,充分实现主线程和子线程进行并行处理;线程处理模块4能对主线程和子线程统一管理,使得管理简单而统一,提升稳定性,能减少临界区,改善程序的流程性,提高用户体验,线程的处理规范化,也可以保证系统稳定性。

上述实施例中,所述窗口对象模块2对操作指令所要求执行的任务进行判断,当所要执行的任务延时或者执行任务所用的资源只是在线程中,则所要执行的任务需要在线程处理。

窗口对象模块2对操作指令所要求执行的任务进行判断,能提升对延时高的任务或者所用的资源只是在线程中的任务进行高效处理,能对减少临界区,改善程序的流程性,提高用户体验,线程的处理规范化,也可以保证系统稳定性。

上述实施例中,所述接口模块1,用于根据第一处理结果生成清理窗口指令,传输至窗口对象模块2;还用对清理结束信号进行显示;

所述窗口对象模块2,用于根据清理窗口指令调取子线程传输至线程消息队列模块3;还用于根据第三处理结果通过主线程隐藏窗体对象;还用于根据第四处理结果清理窗体对象,向接口模块1返回清理结束信号;

所述线程消息队列模块3,用于将子线程放入第二线程消息队列进行保存和排序,生成第三处理结果返回窗口对象模块2;

所述线程处理模块4,用于读取第二线程消息队列中的子线程,清除主线程调取的资源,同时关闭子线程;完成任务时向窗口对象模块2返回第四处理结果;

要清理窗体的时候,主线程隐藏这个窗体,然后给这个窗体的子线程一个退出的消息;这样,就实现“伪删除窗体过程”的过程;当子线程退出后,发送消息给主线程,这时,主线程才开始真正清理窗体,因不用等待高延时的子线程,所以该过程是非常快的。

子线程的清理过程与主线程是并行,异步的;用户清理任务只是将窗体隐藏,然后资源清理用子线程处理,子线程得到充分的利用,而又不影响主线程工作;使得释放变动非常流畅和快速。

上述实施例中,所述线程处理模块4还用于调取主线程,主线程根据第四处理结果清理清理窗体对象;主线程的清理过程能与子线程的清理过程异步并行处理,使得释放变动非常流畅和快速。

实施例3:

如图2所示,一种多线程创建方法,包括以下步骤:

步骤A1.接收外部的窗体对象指令,根据窗体对象指令生成窗体对象,同时分别生成创建第一线程消息队列指令、创建第二线程消息队列指令、创建主线程指令和创建子线程指令;

步骤A2.根据创建第一线程消息队列指令和创建第二线程消息队列指令分别创建第一线程消息队列和第二线程消息队列,并返回第一创建成功消息;根据创建主线程指令和创建子线程指令分别创建主线程和子线程,并返回第二创建成功消息;

步骤A3.根据第一创建成功消息和第二创建成功消息输出窗体对象,将窗体对象传输至外部进行显示。

通过创建第一线程消息队列、第二线程消息队列、主线程和子线程,能使主线程在第一线程消息队列中保存排序,能使子线程在第二线程消息队列中保存排序,充分实现主线程和子线程进行并行处理;能对主线程和子线程统一管理,使得管理简单而统一,提升稳定性。

上述实施例中,在步骤A2中,创建主线程和子线程过程中分别向主线程和子线程中植入智能指针;主线程和子线程中植入智能指针,通过智能指针能保证主线程和子线程能相对自动处理,使得运行更加流畅和快速。

实施例4:

如图3所示,一种多线程处理方法,包括以下步骤:

步骤B1.接收外部的操作指令,对操作指令所要求执行的任务进行判断,当判断所要执行的任务需要在线程处理时,提取对应主线程传输至第一线程消息队列,并生成第一处理结果传输至外部进行显示;

步骤B2.将主线程放入第一线程消息队列进行保存和排序;

步骤B3.读取第一线程消息队列内的主线程,通过主线程进行处理,调取资源执行对应任务,完成任务时返回第二处理结果传输至外部进行显示;完成任务后还清除主线程调取的资源,清除窗口对象。

能使主线程在第一线程消息队列中保存排序,能使子线程在第二线程消息队列中保存排序,充分实现主线程和子线程进行并行处理;能对主线程和子线程统一管理,使得管理简单而统一,提升稳定性,能减少临界区,改善程序的流程性,提高用户体验,线程的处理规范化,也可以保证系统稳定性。

上述实施例中,步骤B1中对操作指令所要求执行的任务进行判断,当所要执行的任务延时或者执行任务所用的资源只是在线程中,则所要执行的任务需要在线程处理;对操作指令所要求执行的任务进行判断,能提升对延时高的任务或者所用的资源只是在线程中的任务进行高效处理,能对减少临界区,改善程序的流程性,提高用户体验,线程的处理规范化,也可以保证系统稳定性。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1