任务调度方法及装置制造方法及图纸

技术编号:24205501 阅读:32 留言:0更新日期:2020-05-20 14:29
本公开提供一种任务调度方法及装置,涉及计算机任务调度技术领域,所述方法包括:检测当前任务的执行时长,判断当前任务的执行时长是否超过预设阈值;如果当前任务的执行时长超过预设阈值,则将所述当前任务拆分为多个子任务;按照流水线方式依次调度所述多个子任务;其中,每个子任务的执行时长小于所示所述当前任务的执行时长。本公开能够解决某一个任务耗时很长,会导致整个系统运行速度慢的问题。

Task scheduling method and device

【技术实现步骤摘要】
任务调度方法及装置
本公开涉及计算机任务调度领域,尤其涉及任务调度方法及装置。
技术介绍
现有软件设计中,为了实现某种功能,通常会将软件流程从整体上划分为多个任务,各个任务之间顺序或并发执行。当多个任务并发共同完成一个任务时,整个流程运转起来之后,整个流程的执行时长取决于耗时最长的任务的执行时间。在这种情况下,如果某一个任务耗时很长,则会导致整个系统运行速度慢。另外,在上述流程中,前一个任务的输出结果是后一个任务的输入数据,现在通常的做法是:针对相邻的两个任务分别开启一个线程,前一个线程的输出结果放入一个队列中,然后,通知后一个线程对这些数据进行获取,其基本模型可参照图1。但是,上述处理方式会使得整体处理流程的流畅性不佳,原因是:两个线程对同一个队列进行操作,一个进入数据的写入,一个进行数据的读取,但是由于队列本身的特性,队列会在每个线程访问过程中加锁,也就是,前一个线程和后一个线程并不能同时操作队列,因此,数据的写入和读取不能同时进行。
技术实现思路
本公开实施例提供一种任务调度方法及装置,本公开能够解决本公开能够解决某一个任务耗时很长,会导致整个系统运行速度慢的问题。所述技术方案如下:根据本公开实施例的第一方面,提供一种任务调度方法,该方法包括:检测当前任务的执行时长,判断当前任务的执行时长是否超过预设阈值;如果当前任务的执行时长超过预设阈值,则将所述当前任务拆分为多个子任务;按照流水线方式依次调度所述多个子任务;其中,每个子任务的执行时长小于所示所述当前任务的执行时长。在一个实施例中,将所述当前任务拆分为多个子任务包括:按照当前任务的属性信息将所述当前任务拆分为多个子任务;其中所述属性信息包括多个子功能信息,所述多个子任务和所述多个子功能一一对应。在一个实施例中,将所述当前任务拆分为多个子任务之后,所述方法还包括:在相邻的两个子任务之间生成任务队列,使得相邻的两个子任务中的前一个子任务对该任务队列进行写操作,后一个子任务对该任务队列进行读操作。在一个实施例中,多个子任务通过多线程完成,所述按照流水线方式依次调度所述多个子任务包括:调度前一个子任务的线程输出作为后一个子任务的线程输入。在一个实施例中,当前任务为图像处理任务,所述多个子任务包括:分包子任务、协议封装子任务和加密子任务。根据本公开实施例的第二方面,提供一种任务调度装置,该装置包括:判断模块,用于检测当前任务的执行时长,判断当前任务的执行时长是否超过预设阈值;拆分模块,用于如果当前任务的执行时长超过预设阈值,则将所述当前任务拆分为多个子任务;调度模块,用于按照流水线方式依次调度所述多个子任务;其中,每个子任务的执行时长小于所示所述当前任务的执行时长。在一个实施例中,拆分模块具体用于:按照当前任务的属性信息将所述当前任务拆分为多个子任务;其中所述属性信息包括多个子功能信息,所述多个子任务和所述多个子功能一一对应。在一个实施例中,上述装置还包括生成模块,用于在所述将所述当前任务拆分为多个子任务之后,在相邻的两个子任务之间生成任务队列,使得相邻的两个子任务中的前一个子任务对该任务队列进行写操作,后一个子任务对该任务队列进行读操作。在一个实施例中,多个子任务通过多线程完成,所述调度模块具体用于:调度前一个子任务的线程输出作为后一个子任务的线程输入。在一个实施例中,当前任务为图像处理任务,所述多个子任务包括:分包子任务、协议封装子任务和加密子任务。本公开提出了一种流水线式的任务调度方案,一方面能够将处理时长超过预设阈值的任务拆分为多个子任务,从而使得整个任务的执行时长满足系统需求,另一方面,由于能够在拆分后相邻的两个子任务之间添加能够同时进行读写操作的队列,这使得各个子任务之间执行时的流畅程度大幅度提高,从而进一步缩短任务执行时的时长。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。附图说明此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。图1是本公开实施例提供的
技术介绍
数据队列示意图;图2是本公开实施例提供的一种任务调度方法的流程图;图3是本公开实施例提供的一种任务调度方法的流程图;图4是本公开实施例提供的一种数据队列示意图;图5是本公开实施例提供的一种数据队列示意图;图6是本公开实施例提供的一种任务调度装置结构图;图7是本公开实施例提供的一种任务调度装置结构图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。图2是本公开实施例提供的一种任务调度方法,如图2所示的任务调度方法包括以下步骤:步骤201、检测当前任务的执行时长,判断当前任务的执行时长是否超过预设阈值;在任务执行过程中,可以对当前任务的执行时间进行监测,以确定当前任务的执行时长是否超过预设阈值;该预设阈值可以是根据需要所设置的满足系统性能需求的一个时间值,实际应用中,该值可以在系统中进行设置和修改。步骤202、如果当前任务的执行时长超过预设阈值,则将所述当前任务拆分为多个子任务;一般的一个任务可划分为多个子任务。当一个任务执行时间过长,不满足系统性能要求时,可对任务进行拆分,拆分成一道道工序,使用多线程完成。在一个实施例中,将所述当前任务拆分为多个子任务包括:按照当前任务的属性信息将所述当前任务拆分为多个子任务;其中所述属性信息包括多个子功能信息,所述多个子任务和所述多个子功能一一对应。具体的,对于任务的拆分根据处理逻辑上的关联性来进行拆分。一个子任务对应一个子功能,其中,子功能的划分是按照逻辑关联性划分的。另外,对于任务的拆分可以进行多次,具体按照如下方式进行:按照处理逻辑对任务进行第一次拆分;判断拆分后的各个子任务的运行时长是否都小于等于系统预设时长阈值;如果有大于预设时长阈值的子任务,则对这些子任务进行第二次拆分,并在拆分后,判断第二次拆分后得到的各个子任务是否都小于等于系统预设时长阈值;如果没有,则结束拆分;如果是,则继续拆分直到拆分得到的每一个子任务的运行时长都小于等于系统预设时长阈值。而最终系统的运行时长则可以认为等于拆分后得到的各个子任务的运行时长中的最大值。比如,以图像处理来说,假设一个图像处理任务按照子功能分为:分包、协议封装、加密这三个步骤,约需要30ms。此时,由于系统需求是将该任务的处理时长保证在15s之内,则经统计以上三个步骤的执行的平均时间依次为本文档来自技高网
...

【技术保护点】
1.一种任务调度方法,其特征在于,所述方法包括:/n检测当前任务的执行时长,判断当前任务的执行时长是否超过预设阈值;/n如果当前任务的执行时长超过预设阈值,则将所述当前任务拆分为多个子任务;/n按照流水线方式依次调度所述多个子任务;其中,每个子任务的执行时长小于所示所述当前任务的执行时长。/n

【技术特征摘要】
1.一种任务调度方法,其特征在于,所述方法包括:
检测当前任务的执行时长,判断当前任务的执行时长是否超过预设阈值;
如果当前任务的执行时长超过预设阈值,则将所述当前任务拆分为多个子任务;
按照流水线方式依次调度所述多个子任务;其中,每个子任务的执行时长小于所示所述当前任务的执行时长。


2.根据权利要求1所述的任务调度方法,其特征在于,所述将所述当前任务拆分为多个子任务包括:
按照当前任务的属性信息将所述当前任务拆分为多个子任务;其中所述属性信息包括多个子功能信息,所述多个子任务和所述多个子功能一一对应。


3.根据权利要求1所述的任务调度方法,其特征在于,所述将所述当前任务拆分为多个子任务之后,所述方法还包括:
在相邻的两个子任务之间生成任务队列,使得相邻的两个子任务中的前一个子任务对该任务队列进行写操作,后一个子任务对该任务队列进行读操作。


4.根据权利要求1所述的任务调度方法,其特征在于,所述多个子任务通过多线程完成;所述按照流水线方式依次调度所述多个子任务包括:
调度前一个子任务的线程输出作为后一个子任务的线程输入。


5.根据权利要求1至4任一项所述的任务调度方法,其特征在于,所述当前任务为图像处理任务,所述多个子任务包括:分包子任务、协议封装子任务和加密子任务。

...

【专利技术属性】
技术研发人员:范志刚朱英龙
申请(专利权)人:西安万像电子科技有限公司
类型:发明
国别省市:陕西;61

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

1