多类型任务管理方法及装置与流程

文档序号:32653549发布日期:2022-12-23 20:26阅读:30来源:国知局
多类型任务管理方法及装置与流程

1.本发明涉及计算机技术领域,尤其涉及一种多类型任务管理方法及装置。


背景技术:

2.列车自动监控系统(automatic train supervision,ats)系统是应用于地铁线路的监控系统,该系统中包含多种类型的任务,例如定时任务、周期性任务或一次性任务等。
3.目前,对于定时任务的处理方法为利用定时器设定系统当前时间到执行定时任务的目标时间的时间间隔,定时器计时达到该时间间隔后执行定时任务,这种方式会影响到执行定时任务的精确性;或,利用定时器设定较小时间间隔,并周期性的与系统当前时间进行比较,在定时器计时达到定时任务的目标时间的情况下执行定时任务,这种方式会浪费大量额外的中央处理器(central processing unit,cpu)时间。
4.对于周期性任务的处理方法为利用多线程定时器设定周期性时间间隔,在定时器计时达到周期性时间间隔的情况下执行周期性任务,采用这种方式导致具有依赖性的前后周期性任务无法正常执行;或,利用单个独占线程执行周期性任务,每次执行完成周期性任务后阻塞当前线程,等待周期时间间隔后继续执行周期性任务,采用这种方式导致系统线程资源供不应求;或,利用用户界面(user interface,ui)定时器对更新ui的周期性任务通过消息队列的方式来实现,这种方式会导致不能准确执行周期性任务。
5.对于一次性任务的处理方法为启动新的线程执行一次性任务,或,利用线程池线程执行一次性任务,这种方式导致对一次性任务进行性能检测或日志记录时,出现大量重复代码,耦合度较高,不利于对程序进行维护。
6.因此,相关技术中无法实现对多类型任务的执行方法进行优化和统一管理亟待解决。


技术实现要素:

7.本发明提供一种多类型任务管理方法及装置,用以解决相关技术中无法实现对多类型任务的执行方法进行优化和统一管理的问题。
8.第一方面,本发明提供一种多类型任务管理方法,包括:
9.确定目标任务类型;
10.基于任务调度管理器执行所述目标任务类型对应的目标任务;
11.其中,所述任务调度管理器提供:第一列表、第一队列、第二队列、接口、第一函数、第二函数;
12.所述第一列表用于存储定时任务,所述第一队列用于存储周期性任务,所述第二队列用于存储一次性任务;
13.所述接口用于将所述定时任务存储至所述第一列表、将所述周期性任务存储至所述第一队列和/或将所述一次性任务存储至所述第二队列;
14.所述第一函数用于从所述第一队列取出所述周期性任务,所述第二函数用于从所
述第二队列取出所述一次性任务。
15.可选地,所述基于任务调度管理器执行所述目标任务类型对应的目标任务,具体包括:
16.在所述目标任务为定时任务的情况下,通过所述接口将所述定时任务存储至所述第一列表,执行所述定时任务;
17.在所述目标任务为周期性任务的情况下,通过所述接口将所述周期性任务存储至所述第一队列,调用所述第一函数取出所述周期性任务,执行所述周期性任务;
18.在所述目标任务为一次性任务的情况下,通过所述接口将所述一次性任务存储至所述第二队列,调用所述第二函数取出所述一次性任务,执行所述一次性任务。
19.可选地,所述执行所述定时任务,具体包括:
20.启动定时器,在所述定时器计时达到定时器的时间间隔的情况下,执行所述定时器的elapsed事件;
21.其中,所述执行所述定时器的elapsed事件包括:
22.停止所述定时器,基于所述定时任务的目标执行时间和当前时间计算执行所述定时任务的剩余时间;
23.判断所述剩余时间是否小于预设时间间隔,若所述剩余时间小于预设时间间隔且大于零,则异步等待所述剩余时间后执行所述定时任务,在所述定时任务执行完成后,退出所述定时器的elapsed事件的执行;或者,
24.若所述剩余时间大于预设时间间隔,则基于缩减比例更新所述定时器的时间间隔,启动所述定时器,在所述定时器计时达到更新后的定时器的时间间隔的情况下,继续执行所述定时器的elapsed事件。
25.可选地,所述执行所述周期性任务,具体包括:
26.基于后台线程池分配第i个线程至所述周期性任务;
27.在第i个周期时间内利用所述第i个线程执行所述周期性任务,其中,i为大于等于1的自然数;
28.若所述周期性任务未取消,异步等待预设执行周期,在等待结束后开始下一个周期的任务执行。
29.可选地,所述执行所述一次性任务,具体包括:
30.基于中央处理器cpu逻辑核数计算所述一次性任务的并行度;
31.判断所述第二队列中剩余任务数量是否大于所述并行度,若大所述于并行度,则从所述第二队列中取出数量等于所述并行度的多个任务;否则,取出所述第二队列中剩余的所有任务;
32.使用所述后台线程池中的多个线程并行执行取出的多个任务,其中,一个线程对应执行一个任务。
33.可选地,所述执行所述一次性任务,还包括以下至少一项:
34.在使用所述后台线程中的多个池线程并行执行取出的多个任务的过程中,对每个任务的执行进行等待操作和异常检测操作,若执行时间超过第一预设阈值或出现异常,则进行日志记录;
35.在所有任务的执行结束后,获取并行执行取出的多个任务的总时间,若所述总时
间大于或等于第二预设阈值,则进行日志记录;
36.打印所述第二队列的剩余任务数量和所述后台线程池的使用情况。
37.第二方面,本发明还提供一种多类型任务管理装置,包括:
38.设置单元,用于确定目标任务类型;
39.执行单元,用于基于任务调度管理器执行所述目标任务类型对应的目标任务。
40.可选地,所述执行单元,具体包括:
41.第一执行子单元,用于在所述目标任务为定时任务的情况下,通过所述接口将所述定时任务存储至所述第一列表,执行所述定时任务;
42.第二执行子单元,用于在所述目标任务为周期性任务的情况下,通过所述接口将所述周期性任务存储至所述第一队列,调用所述第一函数取出所述周期性任务,执行所述周期性任务;
43.第三执行子单元,用于在所述目标任务为一次性任务的情况下,通过所述接口将所述一次性任务存储至所述第二队列,调用所述第二函数取出所述一次性任务,执行所述一次性任务。
44.第三方面,本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述多类型任务管理方法的步骤。
45.第四方面本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所述多类型任务管理方法的步骤。
46.本发明提供的多类型任务管理方法及装置,通过确定目标任务类型,基于任务调度管理器提供的接口、相应的列表和队列以及函数,执行目标任务类型对应的目标任务,实现对多类型任务的统一管理,提高易用性,保证多类型任务的执行更加稳定可靠。
附图说明
47.为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
48.图1是本发明提供的多类型任务管理方法的流程示意图;
49.图2是本发明提供的定时任务处理方法的流程示意图;
50.图3是本发明提供的周期性任务处理方法的流程示意图;
51.图4是本发明提供的一次性任务处理方法的流程示意图;
52.图5是本发明提供的多类型任务管理装置的结构示意图;
53.图6为本发明提供的电子设备的结构示意图。
具体实施方式
54.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳
动前提下所获得的所有其他实施例,都属于本发明保护的范围。
55.为了解决相关技术中无法实现对多类型任务的执行方法进行优化和统一管理的问题,本技术实施例提供一种多类型任务管理方法,可应用于ats系统,ats系统中包括任务调度管理器,该任务调度管理器用于实现ats系统对多类型任务的统一管理及优化。
56.图1是本发明实施例提供的多类型任务管理方法的流程示意图。如图1所示,本发明提供的多类型任务管理方法,该方法包括:
57.步骤100、确定目标任务类型。
58.可选地,目标任务类型至少包括定时任务、周期性任务和一次性任务中的一项。
59.步骤101、基于任务调度管理器执行所述目标任务类型对应的目标任务;
60.其中,所述任务调度管理器提供:第一列表、第一队列、第二队列、接口、第一函数、第二函数;
61.所述第一列表用于存储定时任务,所述第一队列用于存储周期性任务,所述第二队列用于存储一次性任务;
62.所述接口用于将所述定时任务存储至所述第一列表、将所述周期性任务存储至所述第一队列和/或将所述一次性任务存储至所述第二队列;
63.所述第一函数用于从所述第一队列取出所述周期性任务,所述第二函数用于从所述第二队列取出所述一次性任务。
64.在本发明实施例中,为了实现对多类型任务的统一管理且提高易用性,并对执行多类型任务所需的系统线程资源监控,保证多类型任务的执行更加稳定可靠,在ats系统中设计了任务调度管理器。
65.任务调度管理器用于指示ats系统对多类型任务进行调度管理。
66.任务调度管理器为多类型任务的执行提供了统一接口,该统一接口用于将多类型任务添加到任务调度管理器内相应的列表或队列中,实现对多类型任务的存储。
67.任务调度管理器定义了第一列表和缓存队列,缓存队列包括第一队列和第二队列。
68.其中,第一列表用于存储多个定时任务,第一队列用于存储多个周期性任务,第二队列用于存储多个一次性任务。
69.可选地,缓存队列的结构为顺序队列或循环队列。
70.需要说明的是,任务调度管理器通过第一列表和缓存队列,实现对多类型任务的统一管理,例如,若取消定时任务a,任务调度管理器可直接从第一列表中删除定时任务a,进而取消执行定时任务a。
71.进一步地,任务调度管理器定义了第一函数和第二函数,第一函数用于从第一队列中取出周期性任务,第二函数用于从第二队列中取出一次性任务。
72.一种实施方式中,ats系统基于任务调度管理器对目标任务类型对应的目标任务进行调度管理,并执行目标任务。
73.本发明实施例提供的多类型任务管理方法,ats系统确定目标任务类型,基于任务调度管理器提供的接口、相应的列表和队列以及函数,执行目标任务类型对应的目标任务,实现对多类型任务的统一管理,提高易用性,保证多类型任务的执行更加稳定可靠。
74.基于上述实施例的内容,所述基于任务调度管理器执行所述目标任务类型对应的
目标任务,具体包括:
75.在所述目标任务为定时任务的情况下,通过所述接口将所述定时任务存储至所述第一列表,执行所述定时任务;
76.在所述目标任务为周期性任务的情况下,通过所述接口将所述周期性任务存储至所述第一队列,调用所述第一函数取出所述周期性任务,执行所述周期性任务;
77.在所述目标任务为一次性任务的情况下,通过所述接口将所述一次性任务存储至所述第二队列,调用所述第二函数取出所述一次性任务,执行所述一次性任务。
78.定时任务表示到达目标时间点时执行的任务。例如,每天凌晨四点读取运营计划的任务属于定时任务。
79.周期性任务表示基于预设周期重复执行的任务。例如,每隔1小时获取系统运行日志信息的任务属于周期性任务。
80.一次性任务表示在短时间内并行执行一次的多个任务。例如,分别获取多个网络设备的流量数据。
81.可选地,从第一队列和第二队列中取出任务的方式为先进先出或先进后出。
82.需要说明的是,第一函数单独启动一个优先级较高的独占线程,周期性的从第一队列中取出周期性任务,第二函数单独启动一个优先级较高的独占线程,周期性的从第二队列中取出一次性任务,对第一函数和第二函数单独启动优先级较高的独占线程,可有效避免对任务进行调度处理出现异常情况时,第一函数或第二函数无法运行的情形。
83.一种实施方式中,任务调度管理器在确定目标任务为定时任务的情况下,将获取的定时任务通过接口将定时任务存储至定时任务列表,立即启动并执行定时任务。
84.一种实施方式中,任务调度管理器在确定目标任务为周期性任务的情况下,将获取的周期性任务通过接口存储至第一队列,调用第一函数从第一队列中取出周期性任务后,执行该周期性任务。
85.一种实施方式中,任务调度管理器在确定目标任务为一次性任务的情况下,将获取的一次性任务通过接口存储至第二队列,调用第二函数从第二队列中取出一次性任务后,执行一次性任务。
86.本发明实施例提供的多类型任务管理方法,任务调度管理器基于目标任务类型,通过接口将目标任务存储至相应的列表或队列,执行目标任务,实现对多类型任务的统一管理且提高易用性,保证多类型任务的执行更加稳定可靠。
87.基于上述实施例的内容,所述执行所述定时任务,具体包括:
88.启动定时器,在所述定时器计时达到定时器的时间间隔的情况下,执行所述定时器的elapsed事件;
89.其中,所述执行所述定时器的elapsed事件包括:
90.停止所述定时器,基于所述定时任务的目标执行时间和当前时间计算执行所述定时任务的剩余时间;
91.判断所述剩余时间是否小于预设时间间隔,若所述剩余时间小于预设时间间隔且大于零,则异步等待所述剩余时间后执行所述定时任务,在所述定时任务执行完成后,退出所述定时器的elapsed事件的执行;或者,
92.若所述剩余时间大于预设时间间隔,则基于缩减比例更新所述定时器的时间间
隔,启动所述定时器,在所述定时器计时达到更新后的定时器的时间间隔的情况下,继续执行所述定时器的elapsed事件。
93.定时任务包括目标执行时间td、剩余时间t、预设时间间隔δt、缩减比例σ、实际执行任务和定时器。
94.其中,定时任务可以为一个或多个定时任务。
95.目标执行时间表示执行定时任务的目标时间点。
96.剩余时间表示系统当前时间到目标执行时间的间隔。系统当前时间表示为t0,则剩余时间t=t
d-t0。
97.缩减比例用于更新定时器的时间间隔,其中,缩减比例σ满足0<σ≤0.5。
98.定时器包括时间间隔,在定时器计时达到定时器的时间间隔的情况下,触发elapsed事件处理函数。
99.elapsed事件处理函数用于优化定时任务的执行过程。
100.一种实施方式中,定时器的时间间隔的初始值设置为
101.一种实施方式中,若定时器的时间间隔为δt,更新后的定时器的时间间隔为δt*σ。
102.一种实施方式中,执行定时任务结束后,重新计算定时任务的下一个目标执行时间,基于系统当前时间和下一个目标执行时间计算执行定时任务的剩余时间,根据剩余时间设置定时器的初始时间间隔,启动定时器,在定时器计时达到定时器的初始时间间隔的情况下,执行定时器的elapsed事件处理函数。
103.例如,定时任务为每天凌晨四点读取运营计划,则今天凌晨四点执行定时任务结束后,系统当前时间为今天凌晨四点,定时任务的下一个目标执行时间为明天凌晨四点,则在下一个目标执行时间执行定时任务的情况下,执行定时任务的剩余时间为24小时,根据剩余时间设置定时器的初始时间间隔为12小时,启动定时器,在定时器计时达到12小时的情况下,执行执行定时器的elapsed事件处理函数。
104.一种实施方式中,调用后台线程池线程启动定时器,在定时器计时达到δt的情况下,执行定时器的elapsed事件处理函数,该函数的执行步骤为:
105.步骤200、停止定时器,基于定时任务的目标执行时间和系统当前时间计算定时任务的剩余时间t。
106.步骤201、判断剩余时间是否小于预设时间间隔,若t≤0,执行步骤202;若0<t≤δt,执行步骤203,若t1>δt,执行步骤204。
107.步骤202、执行定时任务,再执行步骤205。
108.步骤203、异步等待剩余时间t后,执行定时任务,再执行步骤205。
109.步骤204、更新δt为δt*σ,启动定时器,在定时器计时达到δt*σ的情况下,重复执行步骤200。
110.步骤205、重新计算定时任务的下一次目标执行时间,更新定时器的时间间隔,启动定时器,在定时器达到更新后的定时器的时间间隔的情况下,根据定时器的下一次目标执行时间执行步骤200。
111.本发明实施例提供的多类型任务管理方法,定时任务对应的定时器计时达到定时
器的时间间隔的情况下,执行定时器的elapsed事件处理函数,该函数停止定时器,比较定时任务的剩余时间和预设时间间隔的大小,根据比较结果更新定时器的时间间隔,循环重复判断定时任务的剩余时间和预设时间间隔的大小,直至执行定时任务结束,这种方法优化了定时任务的处理过程,节约了处理器资源,降低处理器周期数,提高执行定时任务的准确性。
112.结合图2具体说明定时任务的处理流程。图2是本发明实施例提供的定时任务处理方法的流程示意图。如图2所示,定时任务处理方法的步骤为:
113.s1、定时器计时达到时间间隔后,触发处理函数;
114.s2、停止定时器;
115.s3、计算剩余时间;
116.s4、剩余时间小于或等于0,执行步骤s8;
117.s5、剩余时间大于0且小于等于预设时间间隔δt,执行步骤s7;
118.s6、剩余时间大于预设时间间隔δt,执行步骤s10;
119.s7、延迟剩余时间;
120.s8、执行定时任务;
121.s9、计算定时任务的下一次目标执行时间,更新下一次执行定时任务的剩余时间;
122.s10、更新定时器的时间间隔,其中,时间间隔=剩余时间*缩小比例;
123.s11、开启定时器计时,重复执行步骤s1。
124.基于上述实施例的内容,所述执行所述周期性任务,具体包括:
125.基于后台线程池分配第i个线程至所述周期性任务;
126.在第i个周期时间内利用所述第i个线程执行所述周期性任务,其中,i为大于等于1的自然数;
127.若所述周期性任务未取消,异步等待预设执行周期,在等待结束后开始下一个周期的任务执行。
128.周期性任务包括预设执行周期t和实际执行任务。
129.需要说的是,下一个周期的任务执行过程为:基于后台线程池分配第i+1个线程至周期性任务,在第i+1个周期时间内利用第i+1个线程执行周期性任务,若周期性任务未取消异步等待预设执行周期t,在等待结束后再次开始第i+2个周期内的任务执行,循环之前的步骤,直至周期性任务取消,则结束执行该周期性任务。
130.需要说明的是,第i个线程与第i+1个线程可以相同,也可以不相同。
131.一种实施方式中,若周期性任务取消,则结束执行该周期性任务。
132.一种实施方式中,第一函数从第一队列中取出周期性任务后,执行周期性任务的具体步骤为:
133.步骤300、基于后台线程池分配第i个线程至周期性任务;
134.步骤301、在第i个周期时间内,利用第i个线程执行周期性任务。
135.步骤302、判断周期性任务是否取消,在周期性任务没有取消的情况下,执行步骤303;在周期性任务取消的情况下,执行步骤404。
136.步骤303、异步等待预设执行周期t,在等待结束后,在第i+1个周期时间内重复执行步骤300。
137.步骤304、结束执行周期性任务。
138.本发明实施例提供的多类型任务管理方法,在每一个周期时间内,在周期性任务没有取消的情况下,利用后台线程池为周期性任务重新分配线程,用于执行周期性任务,这种方法优化了周期性任务的处理过程,节约了处理器资源的使用,保证前后周期性任务的执行时间不重叠,提高执行周期性任务的精确性。
139.结合图3具体说明周期性任务的处理流程。图3是本发明实施例提供的周期性任务处理方法的流程示意图。
140.如图3所示,任务调度管理器将周期性任务存储至第一队列中,周期性任务包括任务0、任务1、......和任务n,任务调度管理器调用第一函数从第一队列中取出周期性任务。
141.进一步地,基于后台线程池分配线程给周期性任务,该线程用于执行周期性任务,执行结束后,判断周期性任务是否取消,若周期性任务取消,结束执行周期性任务;若周期性任务不取消,异步等待预设执行周期后,基于后台线程池重新分配线程给周期性任务,该线程用于执行周期性任务,执行结束后,重复判断周期性任务是否取消的步骤。
142.基于上述实施例的内容,所述执行所述一次性任务,具体包括:
143.基于中央处理器cpu逻辑核数计算所述一次性任务的并行度;
144.判断所述第二队列中剩余任务数量是否大于所述并行度,若大所述于并行度,则从所述第二队列中取出数量等于所述并行度的多个任务;否则,取出所述第二队列中剩余的所有任务;
145.使用所述后台线程池中的多个线程并行执行取出的多个任务,其中,一个线程对应执行一个任务。
146.并行度用于指示任务并行执行的最大数量。
147.一种实施方式中,基于cpu逻辑核数利用公式(1)计算一次性任务的并行度:
[0148][0149]
其中,n
p
表示一次性任务的并行度,nc表示cpu逻辑核数,且n
p
≥4。
[0150]
例如,cpu逻辑核数为16,一次性任务的并行度为11。
[0151]
需要说明的是,从第二队列中取出的多个任务表示一次性任务。
[0152]
一种实施方式中,在取出一次性任务之前,基于cpu逻辑核数利用公式(1)计算一次性任务的并行度。
[0153]
进一步地,任务调用管理器在第二队列中剩余任务数量大于并行度的情况下,调用第二函数从第二队列中取出数量等于并行度的多个任务;在第二队列中剩余任务熟练小于或等于并行度的情况下,调用第二函数从第二队列中取出所有任务。
[0154]
进一步地,对于多个任务,基于后台线程池分配多个线程至多个任务,利用多个线程并行执行多个任务,每个线程对应执行一个任务。
[0155]
本发明实施例提供的多类型任务管理方法,计算一次性任务的并行度,比较第二队列中剩余任务数量和并行度的大小,确定多个任务的数量,利用后台线程池并行执行多个任务,实现了以并行度执行一次性任务,防止cpu使用饱和导致死机卡顿事件,优化了一次性任务的处理过程。
[0156]
基于上述实施例的内容,所述执行所述一次性任务,还包括以下至少一项:
[0157]
步骤400、在使用所述后台线程中的多个池线程并行执行取出的多个任务的过程
中,对每个任务的执行进行等待操作和异常检测操作,若执行时间超过第一预设阈值或出现异常,则进行日志记录。
[0158]
等待操作用于指示在执行多个任务的过程中,分别统计每个任务的执行时间。
[0159]
异常检测操作用于指示在执行多个任务的过程中,分别对每个任务的执行过程进行异常检测。
[0160]
一种实施方式中,利用多个线程并行执行多个任务的过程中,后台线程池线程对每个任务执行等待操作,若执行等待操作的时间超过第一预设阈值,记录第一日志。
[0161]
一种实施方式中,利用多个线程并行执行多个任务的过程中,后台线程池线程对每个任务执行异常检测操作,若任务出现异常,则记录第二日志。
[0162]
其中,第一日志用于指示对每个任务执行等待操作时,该任务执行等待操作的时间超过第一预设阈值。
[0163]
第二日志用于指示对每个任务执行异常检测操作时,该任务出现异常。
[0164]
步骤401、在所有任务的执行结束后,获取并行执行取出的多个任务的总时间,若所述总时间大于或等于第二预设阈值,则进行日志记录。
[0165]
可选地,第二预设阈值可以为10秒。
[0166]
一种实施方式中,利用多个线程并行执行多个任务结束后,计算并行执行多个任务的总时间,判断总时间与第二预设阈值的大小。
[0167]
进一步地,在总时间大于或等于第二预设阈值的情况下,记录第三日志。
[0168]
其中,第三日志用于指示利用多个线程并行执行多个任务的总时间大于或等于第二预设阈值。
[0169]
步骤402、打印所述第二队列的剩余任务数量和所述后台线程池的使用情况。
[0170]
一种实施方式中,任务调度管理器在后台线程池利用多个线程并行执行多个任务结束的情况下,打印第二队列的剩余任务数量以及系统当前的后台线程池中线程使用情况。
[0171]
本发明实施例提供的多类型任务管理方法,在利用后台线程池并行执行多个任务的过程中,利用后台线程池线程对多个任务执行等待操作和异常检测操作,并记录日志,在所有任务执行结束后,获取并行执行所有任务的总时间,并记录日志,同时打印第二队列的剩余任务数量和系统当前的后台线程池使用情况,实现了以横切关注点的方式及时监控多个任务的执行情况,降低代码耦合程度,便于诊断异常情况,提高程序的可维护性。
[0172]
结合图4具体说明一次性任务的处理流程。图4是本发明实施例提供的一次性任务处理方法的流程示意图。
[0173]
如图4所示,任务调度管理器将一次性任务存储至第二队列中,一次性任务包括任务0、任务1、......和任务n,任务调度管理器利用第二函数从第二队列中取出一次性任务。
[0174]
进一步地,从第二队列中取出数量等于并行度的一次性任务,并行度为p,一次性任务包括任务i、任务i+1、......和任务i+p。
[0175]
进一步地,利用后台线程池分配多个线程给一次性任务,每个线程与每个任务是一一对应的,多个线程并行执行一次性任务,执行一次性任务的过程中,对并行执行一次性任务进行计时,并对一次性任务进行异常检测操作,同时记录日志。
[0176]
下面对本发明提供的多类型任务管理装置进行描述,下文描述的多类型任务管理
装置与上文描述的多类型任务管理方法可相互对应参照。
[0177]
图5是本发明实施例提供的多类型任务管理装置示意图。如图5所示,该多类型任务管理装置包括:确定单元500和执行单元510,其中,
[0178]
确定单元500,用于确定目标任务类型;
[0179]
执行单元510,用于基于任务调度管理器执行所述目标任务类型对应的目标任务;
[0180]
其中,所述任务调度管理器提供:第一列表、第一队列、第二队列、接口、第一函数、第二函数;
[0181]
所述第一列表用于存储定时任务,所述第一队列用于存储周期性任务,所述第二队列用于存储一次性任务;
[0182]
所述接口用于将所述定时任务存储至所述第一列表、将所述周期性任务存储至所述第一队列和/或将所述一次性任务存储至所述第二队列;
[0183]
所述第一函数用于从所述第一队列取出所述周期性任务,所述第二函数用于从所述第二队列取出所述一次性任务。
[0184]
本发明提供的多类型任务管理方法及装置,通过确定目标任务类型,基于任务调度管理器提供的接口、相应的列表和队列以及函数,执行目标任务类型对应的目标任务,实现对多类型任务的统一管理,提高易用性,保证多类型任务的执行更加稳定可靠。
[0185]
可选地,执行单元510,具体包括:
[0186]
第一执行子单元,用于在所述目标任务为定时任务的情况下,通过所述接口将所述定时任务存储至所述第一列表,执行所述定时任务;
[0187]
第二执行子单元,用于在所述目标任务为周期性任务的情况下,通过所述接口将所述周期性任务存储至所述第一队列,调用所述第一函数取出所述周期性任务,执行所述周期性任务;
[0188]
第三执行子单元,用于在所述目标任务为一次性任务的情况下,通过所述接口将所述一次性任务存储至所述第二队列,调用所述第二函数取出所述一次性任务,执行所述一次性任务。
[0189]
可选地,所述第一执行子单元,具体用于:
[0190]
启动定时器,在所述定时器计时达到定时器的时间间隔的情况下,执行所述定时器的elapsed事件;
[0191]
其中,所述执行所述定时器的elapsed事件包括:
[0192]
停止所述定时器,基于所述定时任务的目标执行时间和当前时间计算执行所述定时任务的剩余时间;
[0193]
判断所述剩余时间是否小于预设时间间隔,若所述剩余时间小于预设时间间隔且大于零,则异步等待所述剩余时间后执行所述定时任务,在所述定时任务执行完成后,退出所述定时器的elapsed事件的执行;或者,
[0194]
若所述剩余时间大于预设时间间隔,则基于缩减比例更新所述定时器的时间间隔,启动所述定时器,在所述定时器计时达到更新后的定时器的时间间隔的情况下,继续执行所述定时器的elapsed事件。
[0195]
可选地,所述第二执行子单元,具体用于:
[0196]
基于后台线程池分配第i个线程至所述周期性任务;
[0197]
在第i个周期时间内利用所述第i个线程执行所述周期性任务,其中,i为大于等于1的自然数;
[0198]
若所述周期性任务未取消,异步等待预设执行周期,在等待结束后开始下一个周期的任务执行。
[0199]
可选地,所述第三执行子单元,具体用于:
[0200]
基于中央处理器cpu逻辑核数计算所述一次性任务的并行度;
[0201]
判断所述第二队列中剩余任务数量是否大于所述并行度,若大所述于并行度,则从所述第二队列中取出数量等于所述并行度的多个任务;否则,取出所述第二队列中剩余的所有任务;
[0202]
使用所述后台线程池中的多个线程并行执行取出的多个任务,其中,一个线程对应执行一个任务。
[0203]
可选地,所述第三执行子单元,具体用于以下至少一项:
[0204]
在使用所述后台线程中的多个池线程并行执行取出的多个任务的过程中,对每个任务的执行进行等待操作和异常检测操作,若执行时间超过第一预设阈值或出现异常,则进行日志记录;
[0205]
在所有任务的执行结束后,获取并行执行取出的多个任务的总时间,若所述总时间大于或等于第二预设阈值,则进行日志记录;
[0206]
打印所述第二队列的剩余任务数量和所述后台线程池的使用情况。
[0207]
本发明提供的多类型任务管理装置能够实现图1至图4的方法实施例实现的各个过程,并达到相同的技术效果,为避免重复,这里不再赘述。
[0208]
图6为本发明提供的电子设备的结构示意图,如图6所示,该电子设备可以包括:处理器(processor)610、通信接口(communicationsinterface)620、存储器(memory)630和通信总线640,其中,处理器610,通信接口620,存储器630通过通信总线640完成相互间的通信。处理器610可以调用存储器630中的逻辑指令,以执行多类型任务管理方法,该方法包括:
[0209]
确定目标任务类型;
[0210]
基于任务调度管理器执行所述目标任务类型对应的目标任务;
[0211]
其中,所述任务调度管理器提供:第一列表、第一队列、第二队列、接口、第一函数、第二函数;
[0212]
所述第一列表用于存储定时任务,所述第一队列用于存储周期性任务,所述第二队列用于存储一次性任务;
[0213]
所述接口用于将所述定时任务存储至所述第一列表、将所述周期性任务存储至所述第一队列和/或将所述一次性任务存储至所述第二队列;
[0214]
所述第一函数用于从所述第一队列取出所述周期性任务,所述第二函数用于从所述第二队列取出所述一次性任务。
[0215]
此外,上述的存储器630中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以
使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0216]
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的多类型任务管理方法,该方法包括:
[0217]
确定目标任务类型;
[0218]
基于任务调度管理器执行所述目标任务类型对应的目标任务;
[0219]
其中,所述任务调度管理器提供:第一列表、第一队列、第二队列、接口、第一函数、第二函数;
[0220]
所述第一列表用于存储定时任务,所述第一队列用于存储周期性任务,所述第二队列用于存储一次性任务;
[0221]
所述接口用于将所述定时任务存储至所述第一列表、将所述周期性任务存储至所述第一队列和/或将所述一次性任务存储至所述第二队列;
[0222]
所述第一函数用于从所述第一队列取出所述周期性任务,所述第二函数用于从所述第二队列取出所述一次性任务。
[0223]
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的多类型任务管理方法,该方法包括:
[0224]
确定目标任务类型;
[0225]
基于任务调度管理器执行所述目标任务类型对应的目标任务;
[0226]
其中,所述任务调度管理器提供:第一列表、第一队列、第二队列、接口、第一函数、第二函数;
[0227]
所述第一列表用于存储定时任务,所述第一队列用于存储周期性任务,所述第二队列用于存储一次性任务;
[0228]
所述接口用于将所述定时任务存储至所述第一列表、将所述周期性任务存储至所述第一队列和/或将所述一次性任务存储至所述第二队列;
[0229]
所述第一函数用于从所述第一队列取出所述周期性任务,所述第二函数用于从所述第二队列取出所述一次性任务。
[0230]
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0231]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该
计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0232]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1