一种任务调度执行方法、装置、设备及存储介质制造方法及图纸

技术编号:33730753 阅读:19 留言:0更新日期:2022-06-08 21:26
本申请公开了一种任务调度执行方法、装置、设备及存储介质。本申请提供的技术方案,包括:将初始化任务划分为多个第一任务,并确定各个第一任务对应的调度器,调度器包括执行对应第一任务的线程;根据各个第一任务之间的依赖关系,确定每个第一任务的依赖任务,并将无依赖任务的第一任务确定为第二任务;通过调度器优先执行第二任务,以及通过调度器在第一任务的依赖任务执行完毕后执行第一任务。通过上述技术方案,以解决相关技术中应用软件启动效率低的问题,降低初始化任务的耗时,提高应用软件的启动效率。软件的启动效率。软件的启动效率。

【技术实现步骤摘要】
一种任务调度执行方法、装置、设备及存储介质


[0001]本申请涉及计算机
,尤其涉及一种任务调度执行方法、装置、设备及存储介质。

技术介绍

[0002]应用软件运行过程中,部分任务之间存在依赖关系,存在依赖关系的任务需要按照对应的先后顺序进行执行。例如应用软件启动过程中执行初始化的任务,这些任务之间存在依赖关系。
[0003]目前应用软件启动过程中,根据执行初始化的任务之间的依赖关系,确定各个任务之间的执行顺序,并通过单线程按照该执行顺序依次运行各个任务,以快速执行初始化的任务。但随着应用软件的业务成熟以及膨胀,应用软件在启动过程中执行初始化的任务越来越多,任务增多不可避免地增加了运行耗时,单线程已无法满足低耗时的启动需求,导致应用软件的启动效率降低,严重影响应用软件的使用效率。

技术实现思路

[0004]本申请提供一种任务调度执行方法、装置、设备及存储介质,以解决相关技术中应用软件启动效率低的问题,降低初始化任务的耗时,提高应用软件的启动效率。
[0005]第一方面,本申请提供了一种任务调度执行方法,包括:
[0006]将初始化任务划分为多个第一任务,并确定各个第一任务对应的调度器,所述调度器包括执行对应第一任务的线程;
[0007]根据各个第一任务之间的依赖关系,确定每个所述第一任务的依赖任务,并将无依赖任务的第一任务确定为第二任务;
[0008]通过所述调度器优先执行所述第二任务,以及通过所述调度器在所述第一任务的依赖任务执行完毕后执行所述第一任务。
[0009]第二方面,本申请提供了一种任务调度执行装置,包括:
[0010]任务划分模块,被配置为将初始化任务划分为多个第一任务,并确定各个第一任务对应的调度器,所述调度器包括执行对应第一任务的线程;
[0011]依赖确定模块,被配置为根据各个第一任务之间的依赖关系,确定每一所述第一任务的依赖任务,并将无依赖任务的第一任务确定为第二任务;
[0012]任务执行模块,被配置为通过所述调度器优先执行所述第二任务,以及通过所述调度器在所述第一任务的依赖任务执行完毕后执行所述第一任务。
[0013]第三方面,本申请提供了一种任务调度执行设备,包括:存储器以及一个或多个处理器;
[0014]所述存储器,用于存储一个或多个程序;
[0015]当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面所述的任务调度执行方法。
[0016]第四方面,本申请提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如第一方面所述的任务调度执行方法。
[0017]本申请通过将初始化任务划分为多个第一任务,并确定各个第一任务对应的调度器,调度器包括执行对应第一任务的线程;根据各个第一任务之间的依赖关系,确定每个第一任务的依赖任务,并将无依赖任务的第一任务确定为第二任务;通过调度器优先执行第二任务,以及通过调度器在第一任务的依赖任务执行完毕后执行第一任务。通过上述技术手段,解耦第一任务之间的依赖逻辑,使得调度器的任务职责更加清晰,提高代码的可维护性。通过多个调度器中的多线程合理并发运行任务,合理利用多核CPU性能提高任务并发量,提高任务执行效率,降低初始化任务的耗时,提高应用软件的启动效率。
附图说明
[0018]图1是本申请实施例提供的一种任务调度执行方法的流程图;
[0019]图2是本申请实施例提供的划分并确定第一任务的调度器的流程图;
[0020]图3是本申请实施例提供的有向无环图的示意图;
[0021]图4是本申请实施例提供的通过调度器执行第一任务的流程图;
[0022]图5是本申请实施例提供的通过屏障执行第一任务的流程图;
[0023]图6是本申请实施例提供的屏障的示意图;
[0024]图7是本申请实施例提供的另一种任务调度执行装置的结构示意图;
[0025]图8是本申请实施例提供的一种任务调度执行设备的结构示意图。
具体实施方式
[0026]为了使本申请的目的、技术方案和优点更加清楚,下面结合附图对本申请具体实施例作进一步的详细描述。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部内容。在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
[0027]本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
[0028]本申请实施例中提供的任务调度执行方法,可以由任务调度执行设备执行,该任务调度执行设备可以通过软件和/或硬件的方式实现,该任务调度执行设备可以是两个或多个物理实体构成,也可以是一个物理实体构成。在本实施例中,任务调度执行设备可以是运行应用软件的智能终端,如电脑等,也可以是应用软件本身。
[0029]在一实施例中,应用软件的业务会集成一些第三方依赖库,而这些库一般会依赖进行进程上下文环境,所以应用软件在进程启动时会进行初始化操作。在应用软件早期,可以把初始化任务以单线程模型放在应用软件启动过程中执行,操作简便快捷。但随着应用软件的业务逐渐成熟及膨胀,启动过程中执行初始化的任务越来越多,并且执行初始化的任务之间依赖复杂,任务之间也没有指定显式的依赖关系,从而造成了依赖的不确定性,导致代码的可维护性较低。另外,业务成熟和膨胀使得启动过程中执行初始化的任务越来越多,任务增多不可避免地增加了运行耗时。而单线程模型只能根据任务之间的依赖关系依次执行各个初始化的任务,启动耗时长,应用软件的启动效率较低,影响应用软件的使用效率,影响用户的使用体验。
[0030]为解决上述问题,本申请实施例提供了一种任务调度执行方法,以提高初始化任务的执行速度,提高应用软件的启动效率。
[0031]图1是本申请实施例提供的一种任务调度执行方法的流程图。下述以任务调度设备为执行任务调度执行方法的主体为例进行描述。参考图1,该任务调度执行方法包括:
[0032]S110、将初始化任务划分为多个第一任务,并确定各个第一任务本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种任务调度执行方法,其特征在于,包括:将初始化任务划分为多个第一任务,并确定各个第一任务对应的调度器,所述调度器包括执行对应第一任务的线程;根据各个第一任务之间的依赖关系,确定每个所述第一任务的依赖任务,并将无依赖任务的第一任务确定为第二任务;通过所述调度器优先执行所述第二任务,以及通过所述调度器在所述第一任务的依赖任务执行完毕后执行所述第一任务。2.根据权利要求1所述的任务调度执行方法,其特征在于,所述将初始化任务划分为多个第一任务,并确定各个第一任务对应的调度器,包括:根据应用软件的业务模块或功能模块,将所述初始化任务划分成各个所述业务模块或功能模块对应的第一任务;根据所述第一任务的优先级,确定所述第一任务对应的调度器,所述调度器包括主线程调度器和异步线程池调度器。3.根据权利要求2所述的任务调度执行方法,其特征在于,所述异步线程池调度器包括多线程调度器和核心线程调度器;相应的,所述任务调度执行方法,还包括:根据所述异步线程池调度器对应的第一任务的任务类型,确定所述第一任务对应的调度器;其中,所述第一任务的任务类型为读写密集型时,所述第一任务对应的调度器为多线程调度器;所述第一任务的任务类型为计算密集型时,所述第一任务对应的调度器为核心线程调度器。4.根据权利要求1所述的任务调度执行方法,其特征在于,所述通过所述调度器优先执行所述第二任务,包括:若所述调度器对应的第二任务的数量大于所述调度器配置的线程数量,则根据所述第二任务的历史执行时长,通过所述调度器优先执行历史执行时长大的第二任务。5.根据权利要求1所述的任务调度执行方法,其特征在于,所述通过所述调度器在所述第一任务的依赖任务执行完毕后执行所述第一任务,包括:通过每一第一任务的依赖任务构建有向无环图,所述有向无环图中的节点对应于所述第一任务,第一任务的依赖任务对应于所述节点的前置节点;通过所述有向无环图中的节点监听对应前置节点...

【专利技术属性】
技术研发人员:张思超
申请(专利权)人:百果园技术新加坡有限公司
类型:发明
国别省市:

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

1