一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于单线程池的多任务处理的方法及相关装置与流程

2022-03-08 22:54:18 来源:中国专利 TAG:


1.本技术实施例涉及设备控制应用软件领域,尤其涉及一种基于单线程池的多任务处理的方法及相关装置。


背景技术:

2.在面板行业设备制造过程中,针对面板制造、检测等各种工艺流转于设备上下游之间都需与工厂信息系统进行信息交互。目前对于第三方的软件通讯,比如接入工厂的信息系统mes以及cim系统等,设备与工厂信息系统的信息交握流程中,需要符合工厂提供的信息交互流程规范,每一条信息只有在完全执行完信息交握流程才可以确保信息正确地上报给工厂信息系统。中大型设备内部单元较多在同一时刻,产品在不同的单元会产生不同的消息需要上报,而在信息交握过程中,设备在等待工厂信息系统读取数据、设定标志位on/off、或者由于受到通讯效率的影响,总会有一定的时延存在。
3.现有cim系统信息交互技术方案由于受到硬件设备限制通过采用单线程单任务按序交互信息,即将需要发送的消息置入消息队列中,将消息按照顺序上报给工厂信息系统mes,在执行信息交握过程中,经常存在延时或等待外部信息的情况,这时处理器处于空闲状态,却无法执行其他任务,这样进行逐条上报效率低下,导致消息上报迟缓,影响设备运行节拍。


技术实现要素:

4.本技术实施例提供了一种基于单线程池的多任务处理的方法及相关装置,当在执行信息交握时线程内部如果处于等待状态时,线程内部可以轮训地去执行其他的任务,用于提高处理器的时间利用效率。
5.为实现上述目的,本技术第一方面公开了一种基于单线程池的多任务处理的方法,包括:
6.循环获取消息队列中的待处理消息,判断所述待处理消息是否与线程任务池中的子任务存在绑定关系,若否,将所述待处理消息与任务状态为空闲状态的子任务进行绑定;
7.对所述待处理消息绑定的子任务执行信息交握过程,并将所述待处理消息绑定的子任务的任务状态标记为忙碌状态;
8.若标记为忙碌状态的子任务当前处于等待状态,循环执行下一个处于忙碌状态的子任务;
9.若标记为忙碌状态的子任务完成所述信息交握过程,将所述子任务对应绑定的待处理消息从所述消息队列中删除,并将所述子任务释放回所述线程任务池。
10.在一个可选的实施例中,在循环获取消息队列中的待处理消息之前,所述方法还包括:
11.创建并初始化线程任务池;
12.对所述线程任务池进行任务划分,同时,标记每个划分后的子任务的任务状态为
空闲状态。
13.在一个可选的实施例中,若所述待处理消息与所述线程任务池中的子任务存在绑定关系,则将所述待处理消息归还至所述消息队列中。
14.在一个可选的实施例中,所述循环获取消息队列中的待处理消息包括:
15.对所述消息队列进行巡查,以监测是否有传入的待处理消息。
16.在一个可选的实施例中,所述信息交握过程包括以下步骤:
17.发送方发送消息发送请求;
18.接收方确认接收信息;
19.发送方发送消息;
20.接收方确认信息接收完成。
21.本技术第二方面公开了一种基于单线程池的多任务处理的系统,包括:
22.第一获取单元,用于循环获取消息队列中的待处理消息;
23.第一判断单元,用于判断所述待处理消息是否与线程任务池中的子任务存在绑定关系;
24.任务分配单元,当所述第一判断单元确定所述待处理消息与线程任务池中的子任务不存在绑定关系时,用于将所述待处理消息与任务状态为空闲状态的子任务进行绑定;
25.任务执行单元,用于对所述待处理消息绑定的子任务执行信息交握过程;
26.标记单元,用于将所述待处理消息绑定的子任务的任务状态标记为忙碌状态;
27.任务调度单元,若标记为忙碌状态的子任务当前处于等待状态,所述任务调度单元用于循环执行下一个处于忙碌状态的子任务;
28.删除单元,若标记为忙碌状态的子任务完成所述信息交握过程,用于将所述子任务对应绑定的待处理消息从所述消息队列中删除;
29.任务还原单元,用于将所述子任务释放回所述线程任务池。
30.在一个可选的实施例中,所述系统还包括:
31.线程创建单元,用于创建并初始化线程任务池;
32.任务划分单元,用于对所述线程任务池进行任务划分。
33.在一个可选的实施例中,所述系统还包括:消息还原单元,当所述第一判断单元确定所述待处理消息与所述线程任务池中的子任务存在绑定关系,用于将所述待处理消息归还至所述消息队列中。
34.本技术第三方面公开了一种电子设备,包括:
35.处理器、存储器、输入输出单元以及总线;
36.所述处理器与所述存储器、所述输入输出单元以及所述总线相连;
37.所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如前述第一方面及可选实施例中任一项所述的一种基于单线程池的多任务处理的方法的步骤。
38.本技术第四方面公开了一种计算机可读存储介质,所述计算机可读存储介质上保存有程序,所述程序在计算机上执行时执行如前述第一方面及可选实施例中任一项所述的一种基于单线程池的多任务处理的方法。
39.在以上技术方案中,通过将待处理消息与任务池中的每个子任务进行一对一的绑
定,执行每个子任务时如果遇到等待外部信息时,就循环执行下一个子任务,线程内部可以轮训地去执行其他的任务,不再是依靠单线程单任务的将信息逐条上报,从而完成交握过程,提高处理器的时间利用效率。
附图说明
40.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见的,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
41.图1为本技术实施例提供的一种基于单线程池的多任务处理的方法一个实施例流程示意图;
42.图2为本技术实施例提供的一种基于单线程池的多任务处理的方法的另一个实施例流程示意图;
43.图3为本技术实施例提供的一种基于单线程池的多任务处理的系统的一个实施例结构示意图;
44.图4为本技术实施例提供的一种基于单线程池的多任务处理的系统的另一个实施例结构示意图;
45.图5为本技术实施例提供的一种电子设备的一个实施例结构示意图。
具体实施方式
46.本技术实施例提供了一种基于单线程池的多任务处理的方法及相关装置,用于在执行信息交握过程中,如果遇到延时或等待外部信息的情况,线程内部可以轮训地去执行其他的任务,提高处理器的时间利用效率。
47.本技术第一方面公开了一种基于单线程池的多任务处理的方法,该方法采用计算机程序控制措施。在本技术中,所述方法通过在单线程下包括多个子任务同时执行的架构,并应用于工厂信息系统与设备之间的信息交互过程,下面将对所述方法包括的各个步骤进行详尽的阐述。
48.请参阅图1,图1为本技术实施例提供的一种基于单线程池的多任务处理的方法一个实施例流程示意图;包括:
49.101、循环获取消息队列中的待处理消息;
50.中大型企业使用的设备内部单元较多,在同一时刻,不同的系统单元会产生不同的消息需要上报,比如系统单元同时产生了(m 1)条消息,分别记为消息1,

,消息m,消息1’,其中,假设消息1与消息1’为同一种消息,这些消息会放到消息线程中的消息队列中,程序启动后,时刻监测并获取消息队列中的待处理消息。
51.102、判断待处理消息是否与线程任务池中的子任务存在绑定关系,若否,则执行步骤103;
52.程序启动时,新建一个全自动化运行线程,创建并开启n个子任务,表示主流程循环运行,此时,操作系统将线程分配给处理器,线程管理由操作系统内核控制。此时,这n个子任务的任务状态均为空闲状态,通过标记为noworking表示子任务的任务状态,空闲状态
的子任务在当前线程中便处于等待接收消息的状态。判断获取到的待处理消息是否与线程任务池中的子任务存在有绑定关系,如果没有子任务与取得的待处理消息存在绑定关系,则执行步骤103。
53.103、将待处理消息与任务状态为空闲状态的子任务进行绑定;
54.根据设定,同一条消息不可以同时上报,消息队列中的待处理消息会逐个与线程任务池中标记为noworking的子任务进行绑定,如果在消息队列中获取到待处理消息,先对比绑定结果,如果没有子任务与取得的待处理消息存在绑定关系,则将待处理消息与标记为noworking的子任务进行绑定。如果线程任务池中没有子任务,则待处理消息处于等待处理状态。
55.104、对待处理消息绑定的子任务执行信息交握过程,并将所述待处理消息绑定的子任务的任务状态标记为忙碌状态;
56.对待处理消息绑定的子任务执行信息交握过程,比如任务1绑定了待处理消息1,则任务1开启,任务1便处于忙碌状态,将任务1标记为working状态,进入到消息交握过程。
57.另外,需要说明的是,上述消息交握过程包括以下步骤发送方发送消息发送请求;接收方确认接收信息;发送方发送消息;接收方确认信息接收完成。当消息1执行消息发送请求之后,需要等待系统确认接收信息,此时,任务2开启,并标记为working状态,也进入到消息交握过程中,并在发送了消息请求之后,等待系统接收确认,

,任务m同样开启,

,直至所有绑定了待处理消息的任务开启,所有任务此时都在轮训等待系统接收确认信息的信号。
58.105、若标记为忙碌状态的子任务当前处于等待状态,循环执行下一个处于忙碌状态的子任务;
59.若此时任务1接收到系统接收确认信号,任务1执行消息发送,需要进一步等待系统确认消息接收完成的确认信号,任务2执行消息发送,页需要进一步等待系统确认消息接收完成的确认信号,

,如果此时任务1接收到系统接收完成的确认信号,其他任务若仍然没有接收到mes确认信号,当前的子任务继续轮训等待,释放处理器资源,处理器循环执行下一个处于忙碌状态的子任务。
60.106、若标记为忙碌状态的子任务完成所述信息交握过程,将子任务对应绑定的待处理消息从所述消息队列中删除,并将所述子任务释放回上述线程任务池。
61.若标记为忙碌状态的子任务完成所述信息交握过程,即当前的子任务接收到信息接收完成的确认信号,将当前执行的子任务对应绑定的待处理消息从上述消息队列中删除,并将所述子任务的任务状态恢复至空闲状态,即标记为noworking,该子任务释放回上述线程任务池,使该子任务处于等待绑定待处理消息时的状态。
62.在以上技术方案中,通过将待处理消息与任务池中的每个子任务进行一对一的绑定,执行每个子任务时如果遇到等待外部信息时,就循环执行下一个子任务,线程内部可以轮训地去执行其他的任务,不再是依靠单线程单任务的将信息逐条上报,从而完成交握过程,提高处理器的时间利用效率。
63.请参阅图2,图2为本技术实施例提供的一种基于单线程池的多任务处理的方法另一个实施例流程示意图;包括:
64.201、创建并初始化线程任务池;
65.线程初始化主要是初始化线程池中的线程任务总数的初始化值,建立初始化方法通过循环的方式实例化n个单线程池,n为线程任务池能够容纳的最大任务数目,具体根据内存资源进行确定。
66.202、对线程任务池进行任务划分,同时,标记每个划分后的子任务的任务状态为空闲状态;
67.具体的,根据上下文配置及任务总数对线程任务池进行任务划分,同时,标记每个划分后的子任务的任务状态为空闲状态,空闲状态可以用noworking标识。
68.203、对消息队列进行巡查,以监测是否有传入的待处理消息;
69.中大型企业使用的设备内部单元较多,在同一时刻,不同的系统单元会产生不同的消息需要上报,这些消息会放到消息线程中的消息队列中,程序启动后,对该消息队列中的消息进行循环读取,以便时刻监测并获取消息队列中的待处理消息。
70.204、判断待处理消息是否与线程任务池中的子任务存在绑定关系,若是,执行步骤209,若否,则执行步骤205;
71.程序启动时,新建一个全自动化运行线程,创建并开启n个子任务,表示主流程循环运行,此时,操作系统将线程分配给处理器,线程管理由操作系统内核控制。此时,这n个子任务的任务状态均为空闲状态,通过标记为noworking表示子任务的任务状态,空闲状态的子任务在当前线程中便处于等待接收消息的状态。判断获取到的待处理消息是否与线程任务池中的子任务存在有绑定关系,如果没有子任务与取得的待处理消息存在绑定关系,则执行步骤205,如果有子任务与取得的待处理消息存在绑定关系,则执行步骤209。
72.205、将待处理消息与任务状态为空闲状态的子任务进行绑定;
73.206、对待处理消息绑定的子任务执行信息交握过程,并将所述待处理消息绑定的子任务的任务状态标记为忙碌状态;
74.207、若标记为忙碌状态的子任务当前处于等待状态,循环执行下一个处于忙碌状态的子任务;
75.208、若标记为忙碌状态的子任务完成所述信息交握过程,将子任务对应绑定的待处理消息从所述消息队列中删除,并将所述子任务释放回上述线程任务池。
76.本实施例中的步骤205至步骤208与前述实施例中步骤103至步骤106类似,此处不再赘述。
77.209、将待处理消息归还至所述消息队列中。
78.如果获取的待处理消息已经有相同的消息与子任务进行绑定,而同一消息不能同时上报,将当前获取的待处理消息归还至上述消息队列中,等待与之相同的消息完成上报之后再与线程池中空闲状态的子任务进行绑定。这样可以确保每一条消息都能够正确的上报给信息系统,避免信息上报出错的概率。
79.本技术第二方面公开了一种基于单线程池的多任务处理的系统,请参阅图3,图3为本技术实施例提供的一种基于单线程池的多任务处理的系统的一个实施例结构示意图;包括:
80.第一获取单元301,用于循环获取消息队列中的待处理消息;
81.第一判断单元302,用于判断所述待处理消息是否与线程任务池中的子任务存在绑定关系;
82.任务分配单元303,当所述第一判断单元302确定所述待处理消息与线程任务池中的子任务不存在绑定关系时,用于将所述待处理消息与任务状态为空闲状态的子任务进行绑定;
83.任务执行单元304,用于对所述待处理消息绑定的子任务执行信息交握过程;
84.标记单元305,用于将所述待处理消息绑定的子任务的任务状态标记为忙碌状态;
85.任务调度单元306,若标记为忙碌状态的子任务当前处于等待状态,所述任务调度单元306用于循环执行下一个处于忙碌状态的子任务;
86.删除单元307,若标记为忙碌状态的子任务完成所述信息交握过程,用于将所述子任务对应绑定的待处理消息从所述消息队列中删除;
87.任务还原单元308,用于将所述子任务释放回所述线程任务池。
88.请参阅图4,图4为本技术实施例提供的一种基于单线程池的多任务处理的系统的另一个实施例结构示意图;包括:
89.第一获取单元401,用于循环获取消息队列中的待处理消息;
90.第一判断单元402,用于判断所述待处理消息是否与线程任务池中的子任务存在绑定关系;
91.任务分配单元403,当所述第一判断单元402确定所述待处理消息与线程任务池中的子任务不存在绑定关系时,用于将所述待处理消息与任务状态为空闲状态的子任务进行绑定;
92.任务执行单元404,用于对所述待处理消息绑定的子任务执行信息交握过程;
93.标记单元405,用于将所述待处理消息绑定的子任务的任务状态标记为忙碌状态;
94.任务调度单元406,若标记为忙碌状态的子任务当前处于等待状态,所述任务调度单元406用于循环执行下一个处于忙碌状态的子任务;
95.删除单元407,若标记为忙碌状态的子任务完成所述信息交握过程,用于将所述子任务对应绑定的待处理消息从所述消息队列中删除;
96.任务还原单元408,用于将所述子任务释放回所述线程任务池。
97.在一个可选的实施例中,所述系统还包括:
98.线程创建单元409,用于创建并初始化线程任务池;
99.任务划分单元410,用于对所述线程任务池进行任务划分。
100.在一个可选的实施例中,所述系统还包括:消息还原单元411,当所述第一判断单元402确定所述待处理消息与所述线程任务池中的子任务存在绑定关系,用于将所述待处理消息归还至所述消息队列中。
101.关于第二方面所述的一种基于单线程池的多任务处理的系统,具体限定可以参见上文中对于第一方面中的一种基于单线程池的多任务处理的方法的限定,在此不再赘述。上述一种基于单线程池的多任务处理的系统中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
102.本技术第三方面公开了一种电子设备,图5为本技术实施例提供的一种电子设备的一个实施例结构示意图;包括:
103.处理器501、存储器502、输入输出单元503以及总线504;
104.处理器501与存储器502、输入输出单元503以及总线504相连;
105.所述存储器502存储有所述处理器501可执行的机器可读指令,当电子设备运行时,所述处理器501与所述存储器502之间通过总线通信,所述机器可读指令被所述处理器501执行时执行如前述图1至图2所示实施例中一种基于单线程池的多任务处理的方法中对应的步骤,此处不再赘述。
106.本技术第四方面公开了一种计算机可读存储介质,所述计算机可读存储介质上保存有程序,所述程序在计算机上执行时执行如前述图1至图2所示实施例中的一种基于单线程池的多任务处理的方法中对应的步骤,此处不再赘述。
107.在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
108.对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
109.还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
110.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
111.在本技术所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
112.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
113.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
114.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式
体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献