掌桥专利:专业的专利平台
掌桥专利
首页

多任务调度的方法及装置、电子设备及可读存储介质

文献发布时间:2023-06-19 09:30:39


多任务调度的方法及装置、电子设备及可读存储介质

技术领域

本发明涉及数据库技术领域,具体而言,涉及一种多任务调度的方法及装置、电子设备及可读存储介质。

背景技术

在某些业务场景中,业务流程是由多个任务组合而成的,流程的执行就是对多个任务的执行。如果任务是互相独立的,那么任务的执行不需要排序,不同的执行顺序对结果没有影响,可以将所有任务并行执行以降低耗时,提升性能。如果任务不是互相独立,而是彼此之间有依赖关系,每个流程可以抽象为一个有向无环的流程图,任务按照拓扑排序的方式,等待依赖任务执行完成才能执行。在这种情况下,所有任务无法完全并行执行,需要设计一个存在依赖关系的任务并行执行策略。

在现有的多任务依赖场景中,有两种并行执行任务的策略,分别是任务分组策略和Fork-Join策略。

任务分组策略是将任务分组,每个任务组内的任务互相独立,任务组与任务组之间存在依赖关系。在执行的过程中,任务组内的任务并行执行,任务组和任务组之间的任务串行执行,需要等待上一个任务组内的任务全部执行完成才能执行。

Fork-Join策略是采用分治的思想,分治的是任务的依赖任务(子任务)。在执行过程中,首先并行执行当前任务的依赖任务(Fork),等待依赖任务都执行完成后(Join),再执行当前任务。

可见,相关技术中针对上述的问题,目前尚未提出有效的解决方案。

发明内容

本发明实施例提供了一种多任务调度的方法及装置、电子设备及可读存储介质,以至少解决由于相关技术中系统各种多任务中存在依赖任务,而导致任务无法完全并行执行的技术问题。

根据本发明实施例的一个方面,提供了一种多任务执行方法,包括:在接收到任务获取指令时,获取目标系统中的可执行任务队列,所述可执行任务队列包括可执行的多个待执行任务;并行执行所述可执行任务队列中的待执行任务;在所述待执行任务完成时,生成所述任务获取指令。

进一步地,获取目标系统中的可执行任务队列,包括:确定所述目标系统中的全部可执行任务;根据多个所述待执行任务的优先级对所述全部任务进行排序,以得到所述可执行任务队列。

进一步地,根据所述任务的优先级对所述全部任务进行排序,以得到所述可执行任务队列,包括:确定所述全部可执行任务中的依赖任务以及一般任务;提升所述依赖任务的优先级;根据所述依赖任务和所述一般任务的优先级,对所述全部任务进行排序,以得到所述可执行任务队列。

进一步地,根据所述依赖任务和所述一般任务的优先级,对所述全部任务进行排序,以得到所述可执行任务队列,包括:根据所述目标系统对应的处理器的性能参数;根据所述性能参数确定所述可执行任务队列的队列长度;根据所述队列长度、所述依赖任务和所述一般任务的优先级,对所述全部任务进行排序,以得到所述可执行任务队列,

进一步地,在所述待执行任务完成时,生成所述任务获取指令,包括:在所述待执行任务完成时,生成任务完成事件;将所述任务完成事件加入通知队列;根据所述通知队列生成所述任务获取指令。

根据本发明实施例的另一方面,还提供了一种多任务执行装置,包括:获取单元,用于在接收到任务获取指令时,获取目标系统中的可执行任务队列,所述可执行任务队列包括可执行的多个待执行任务;执行单元,用于并行执行所述可执行任务队列中的待执行任务;处理单元,用于在所述待执行任务完成时,生成所述任务获取指令。

进一步地,所述获取单元包括:确定模块,用于确定所述目标系统中的全部可执行任务;排序模块,用于根据所述执行任务的优先级对所述全部任务进行排序,以得到所述可执行任务队列。

进一步地,所述排序模块包括:确定子模块,用于确定所述全部可执行任务中的依赖任务以及一般任务;处理子模块,用于提升所述依赖任务的优先级;排序子模块,用于根据所述依赖任务和所述一般任务的优先级,对所述全部任务进行排序,以得到所述可执行任务队列。

进一步地,所述排序子模块包括:第一确定子单元,用于确定所述目标系统对应的处理器的性能参数;第二确定子单元,用于根据所述性能参数确定所述可执行任务队列的队列长度;排序子单元,用于根据所述队列长度、所述依赖任务和所述一般任务的优先级,对所述全部任务进行排序,以得到所述可执行任务队列,

进一步地,所述处理单元包括:处理模块,用于在所述待执行任务完成时,生成任务完成事件;所述处理模块,还用于将所述任务完成事件加入通知队列;所述处理模块,还用于根据所述通知队列生成所述任务获取指令。

根据本发明实施例的另一方面,还提供了一种多任务执行系统,包括:调度器,用于在接收到任务获取指令时,获取目标系统中的可执行任务队列,所述可执行任务队列包括可执行的多个待执行任务;执行器,用于并行执行所述可执行任务队列中的待执行任务;阻塞器,用于在所述待执行任务完成时,生成所述任务获取指令。

根据本发明实施例的另一方面,还提供了一种电子设备,包括处理器,存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如上所述的多任务执行方法的步骤。

根据本发明实施例的另一方面,还提供了一种可读存储介质,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如上所述的多任务执行方法的步骤。

在本发明实施例中,通过在接收到任务获取指令时,获取目标系统中的可执行任务队列,所述可执行任务队列包括可执行的多个待执行任务;并行执行所述可执行任务队列中的待执行任务;在所述待执行任务完成时,生成所述任务获取指令,达到了提升任务执行效率的目的,每个依赖任务只执行一次,从而实现了实现节约资源的技术效果,进而解决了由于相关技术中系统各种多任务中存在依赖任务,而导致任务无法完全并行执行的技术问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的一种可选的多任务执行方法的应用场景示意图;

图2是根据本发明实施例的一种可选的多任务执行方法的流程示意图;

图3是根据本发明实施例的一种可选的多任务执行装置的结构示意图;

图4是根据本发明实施例的一种可选的多任务执行系统的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

实施例1

本发明实施例中提供了一种多任务执行方法,应用于电子终端的终端系统中,具体可以应用于终端系统中的多进程的任务处理过程,也可以是某个应用程序的业务功能的业务流程。如图1所示,在电子终端中包括调度器102以及执行器104,调度器102执行步骤S1:在接收到任务获取指令时,获取目标系统中的可执行任务队列,执行器104执行步骤S2:并行执行可执行任务队列中的待执行任务;执行器104执行步骤S3:在待执行任务完成时,生成任务获取指令,将任务获取指令发送至调度器102,可见,本实施例中,通过调度器102以及执行器104之间的步骤重复,来获取可执行任务队列以及来完成所有任务的调度。

本实施例中的电子终端包括但不限于个人电脑PC、平板电脑、手机以及微型电脑等,电子终端的终端系统包括但不限于安卓Android系统、iOS系统、Windows系统、Linux系统以及鸿蒙系统HarmonyOS等等。

根据本发明实施例,提供了一种多任务执行方法,如图2所示,该方法包括:

S202,在接收到任务获取指令时,获取目标系统中的可执行任务队列,可执行任务队列包括可执行的多个待执行任务;

S204,并行执行可执行任务队列中的待执行任务;

S206,在待执行任务完成时,生成任务获取指令。

具体地,在本实施例中,可执行任务队列中的待执行任务为当前业务流程中的任务。本实施例中的待执行任务为没有依赖任务或者依赖任务都已经执行完成的任务。一般可以通过系统中的依赖任务模型获取待执行任务,将待执行任务加入可执行任务队列。

在具体地应用场景中,在获取到目标系统中当前业务的待执行任务数量较大,通过预设规则获取包括多个待执行任务的可执行任务队列,可执行任务队列中的待执行任务的数量一般为电子终端的中央处理器CPU的线程数量。

接下来,CPU在接收到指令执行当前业务时,获取目标系统中的可执行任务队列,然后在获取到可执行任务队列后,并行执行可执行任务队列中的待执行任务,在待执行任务完成时,重新确定可执行任务队列,以实现所有任务的调度。

在具体地应用场景中,在目标系统中设置两个数据模型:依赖任务模型和后继任务模型,分别保存任务流程中所有任务的依赖任务和后继任务。通过这两个模型选择可执行任务。在一个例子中,根据依赖任务模型,获取所有任务中没有依赖任务或者依赖任务都已经执行完成的任务,生成可执行任务队列。在另一个例子中,当任务执行完成后,根据后继任务模型获取任务的后继任务,通过选择后继任务中的可执行任务,放入执行器执行。

需要说明的是,通过本实施例,在接收到任务获取指令时,获取目标系统中的可执行任务队列,所述可执行任务队列包括可执行的多个待执行任务;并行执行所述可执行任务队列中的待执行任务;在所述待执行任务完成时,生成所述任务获取指令,达到了提升任务执行效率的目的,每个依赖任务只执行一次,从而实现了实现节约资源的技术效果。

作为一种可选地技术方案,在本实施例中,获取目标系统中的可执行任务队列,包括:确定目标系统中的全部可执行任务;根据多个待执行任务的优先级对全部任务进行排序,以得到可执行任务队列。

具体地,在本实施例中,根据依赖任务模型,获取所有任务中没有依赖任务或者依赖任务都已经执行完成的可执行任务,根据可执行任务的优先级对全部任务进行排序,以得到可执行任务队列。

作为一种可选地技术方案,在本实施例中,根据任务的优先级对全部任务进行排序,以得到可执行任务队列,包括但不限于:确定全部可执行任务中的依赖任务以及一般任务;提升依赖任务的优先级;根据依赖任务和一般任务的优先级,对全部任务进行排序,以得到可执行任务队列。

具体地,在本实施例中,待执行任务中包括依赖任务以及一般任务,一般任务为非依赖任务,不存在后继任务。依赖任务存在后继任务,依赖任务与后继任务存在依赖关系,后继任务需要在依赖任务完成后才可执行。在根据依赖任务模型获取所有任务中的可执行任务之后,确定全部可执行任务中的依赖任务以及一般任务,确定各个任务的优先级,并基于依赖任务的属性提升依赖任务的优先级,然后对全部可执行任务进行排序,以得到可执行任务队列。

通过上述实施例,提升依赖任务的优先级,根据依赖任务和一般任务的优先级,对全部任务进行排序,以实现了对业务整体任务的的流程加速,提升了任务处理效率。

作为一种可选地技术方案,在本实施例中,根据依赖任务和一般任务的优先级,对全部任务进行排序,以得到可执行任务队列,包括但不限于:根据目标系统对应的处理器的性能参数;根据性能参数确定可执行任务队列的队列长度;根据队列长度、依赖任务和一般任务的优先级,对全部任务进行排序,以得到可执行任务队列。

具体地,在本实施例中,根据电子终端硬件设备CPU的性能参数来确定可执行任务队列的长度,根据CPU的线程数量确定可执行任务队列中的待执行任务的数量,基于依赖任务的属性提升依赖任务的优先级,然后对全部可执行任务进行排序,以得到可执行任务队列。

作为一种可选地技术方案,在本实施例中,在待执行任务完成时,生成任务获取指令,包括但不限于:在待执行任务完成时,生成任务完成事件;将任务完成事件加入通知队列;根据通知队列生成任务获取指令。

具体地,在本实施例中,将待执行任务完成作为一个任务完成事件同步写入通知队列中,通知队列中包括由多个事件构成的事件列表,然后根据通知队列中的事件列表依次生成任务获取指令,以指示CPU重新获取可执行任务队列。

在一个例子中,假设CPU的线程数量为8,即CPU可以同时异步执行的任务数量为8,当前业务的任务池中包括20个任务,则设置可执行任务队列中的待执行任务的数量为8,在CPU异步执行可执行任务队列中的待执行任务时,若存在待执行任务A、B、C依次完成时,则生成任务A完成事件、任务B完成事件、任务C完成事件,依次加入通知队列中,此时通知队列中的时间列表中包括任务A完成事件、任务B完成事件、任务C完成事件。根据三个时间的完成时间顺序,依次通知CPU重新获取可执行任务队列。

需要说明的是,CPU重新获取可执行任务队列的过程中,每次都需要依据当前业务对应的剩余任务的优先级,对剩余任务进行排序并获取新的可执行任务队列。

在具体地应用场景中,目标系统中包括调度器和执行器以外,还包括阻塞队列,其中,阻塞队列的作用是缓存任务执行完成的结果,通知调度器任务已经完成。任务完成作为一个事件同步写入队列中,通知调度器队列可用,调度器收到通知,从队列中获取已经完成的任务,继续调度。通过这种执行器-调度器的事件驱动模式,调度器在任务执行的时候无需等待任务执行完成,可以同时调度多个任务执行。如果当前没有可以调度的任务,调度器会释放资源进入睡眠状态,等待任务完成事件到达队列。

通过本实施例,在接收到任务获取指令时,获取目标系统中的可执行任务队列,所述可执行任务队列包括可执行的多个待执行任务;并行执行所述可执行任务队列中的待执行任务;在所述待执行任务完成时,生成所述任务获取指令,达到了提升任务执行效率的目的,每个依赖任务只执行一次,从而实现了实现节约资源的技术效果。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

实施例2

根据本发明实施例,还提供了一种用于实施上述多任务执行方法的多任务执行装置,如图3所示,该装置包括:

1)获取单元30,用于在接收到任务获取指令时,获取目标系统中的可执行任务队列,所述可执行任务队列包括可执行的多个待执行任务;

2)执行单元32,用于并行执行所述可执行任务队列中的待执行任务;

3)处理单元34,用于在所述待执行任务完成时,生成所述任务获取指令。

可选地,在本实施例中,所述获取单元30包括:

1)确定模块,用于确定所述目标系统中的全部可执行任务;

2)排序模块,用于根据所述执行任务的优先级对所述全部任务进行排序,以得到所述可执行任务队列。

可选地,在本实施例中,所述排序模块包括:

1)确定子模块,用于确定所述全部可执行任务中的依赖任务以及一般任务;

2)处理子模块,用于提升所述依赖任务的优先级;

3)排序子模块,用于根据所述依赖任务和所述一般任务的优先级,对所述全部任务进行排序,以得到所述可执行任务队列。

可选地,在本实施例中,所述排序子模块包括:

1)第一确定子单元,用于确定所述目标系统对应的处理器的性能参数;

2)第二确定子单元,用于根据所述性能参数确定所述可执行任务队列的队列长度;

3)排序子单元,用于根据所述队列长度、所述依赖任务和所述一般任务的优先级,对所述全部任务进行排序,以得到所述可执行任务队列。

可选地,在本实施例中,所述处理单元34包括:

1)处理模块,用于在所述待执行任务完成时,生成任务完成事件;

2)所述处理模块,还用于将所述任务完成事件加入通知队列;

3)所述处理模块,还用于根据所述通知队列生成所述任务获取指令。

可选地,本实施例中的具体示例可以参考上述实施例1中所描述的示例,本实施例在此不再赘述。

实施例3

根据本发明实施例,还提供了一种用于实施上述多任务执行方法的多任务执行系统,如图4所示,该系统包括:

1)调度器40,用于在接收到任务获取指令时,获取目标系统中的可执行任务队列,所述可执行任务队列包括可执行的多个待执行任务;

2)执行器42,用于并行执行所述可执行任务队列中的待执行任务;

3)阻塞器44,用于在所述待执行任务完成时,生成所述任务获取指令。

具体地,调度器40的功能是选择当前可执行任务,生成可执行任务队列,将可执行任务队列中的待执行任务放入执行器42执行。调度器40有两个数据模型:依赖任务模型和后继任务模型,分别保存任务流程中所有任务的依赖任务和后继任务。调度器40通过这两个模型选择可执行任务。

S1,根据依赖任务模型,获取所有任务中没有依赖任务或者依赖任务都已经执行完成的任务,生成可执行任务队列,将可执行任务队列中的待执行任务放入执行器执行。

S2,当任务执行完成后,根据后继任务模型获取任务的后继任务,通过步骤S1选择后继任务中的可执行任务,放入执行器执行。

阻塞器44的作用是缓存任务执行完成的结果,通知调度器40任务已经完成。任务完成作为一个任务完成事件同步写入通知队列中,通知调度器队列可用,调度器40收到通知,从队列中获取已经完成的任务,继续调度。通过这种执行器—调度器的事件驱动模式,调度器40在任务执行的时候无需等待任务执行完成,可以同时调度多个任务执行。如果当前没有可以调度的任务,调度器40会释放资源进入睡眠状态,等待任务完成事件到达队列。

可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。

实施例4

本发明的实施例还提供了一种电子设备,其特征在于,包括处理器,存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如上所述的多任务执行方法的步骤。

可选地,在本实施例中,存储器被设置为存储用于执行以下步骤的程序代码:

S1,在接收到任务获取指令时,获取目标系统中的可执行任务队列,所述可执行任务队列包括可执行的多个待执行任务;

S2,并行执行所述可执行任务队列中的待执行任务;

S3,在所述待执行任务完成时,生成所述任务获取指令。

可选地,本实施例中的具体示例可以参考上述实施例1中所描述的示例,本实施例在此不再赘述。

实施例5

本发明的实施例还提供了一种可读存储介质,其特征在于,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如上所述的多任务执行方法的步骤。

可选地,在本实施例中,可读存储介质被设置为存储用于执行以下步骤的程序代码:

S1,在接收到任务获取指令时,获取目标系统中的可执行任务队列,所述可执行任务队列包括可执行的多个待执行任务;

S2,并行执行所述可执行任务队列中的待执行任务;

S3,在所述待执行任务完成时,生成所述任务获取指令。

可选地,本实施例中的具体示例可以参考上述实施例1中所描述的示例,本实施例在此不再赘述。

可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

相关技术
  • 多任务调度的方法及装置、电子设备及可读存储介质
  • 多任务调度方法、应用服务器及计算机可读存储介质
技术分类

06120112192176