CN116932210A - 任务执行方法、装置和存储介质及电子设备 - Google Patents
任务执行方法、装置和存储介质及电子设备 Download PDFInfo
- Publication number
- CN116932210A CN116932210A CN202310867750.8A CN202310867750A CN116932210A CN 116932210 A CN116932210 A CN 116932210A CN 202310867750 A CN202310867750 A CN 202310867750A CN 116932210 A CN116932210 A CN 116932210A
- Authority
- CN
- China
- Prior art keywords
- task
- target
- node
- data
- stage
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 110
- 239000000872 buffer Substances 0.000 claims abstract description 240
- 230000008569 process Effects 0.000 claims abstract description 42
- 230000015654 memory Effects 0.000 claims description 57
- 230000003139 buffering effect Effects 0.000 claims description 22
- 230000005540 biological transmission Effects 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 17
- 238000012545 processing Methods 0.000 claims description 17
- 230000001960 triggered effect Effects 0.000 claims description 14
- 239000000758 substrate Substances 0.000 claims 1
- 238000007726 management method Methods 0.000 description 45
- 238000010586 diagram Methods 0.000 description 20
- 238000013461 design Methods 0.000 description 17
- 230000000903 blocking effect Effects 0.000 description 15
- 238000004891 communication Methods 0.000 description 10
- 230000004044 response Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000033764 rhythmic process Effects 0.000 description 2
- 239000000523 sample Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 206010000060 Abdominal distension Diseases 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 208000024330 bloating Diseases 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007429 general method Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请公开了一种任务执行方法、装置和存储介质及电子设备。其中,该方法包括:指示第一任务节点执行第一阶段的第一目标任务,得到第一子任务数据;将第一子任务数据传输至第二任务节点关联的第一缓冲区;指示第二任务节点从第一缓冲区中读取第一子任务数据,并指示第二任务节点执行第一阶段的第二目标任务;在第二任务节点执行第一阶段的第二目标任务的过程中,指示第一任务节点执行第二阶段的第一目标任务,并在第二阶段的第一目标任务执行完成的情况下,得到第二子任务数据;指示第二任务节点从第二缓冲区中读取第二子任务数据,并指示第二任务节点执行第二阶段的第二目标任务。本申请解决了任务执行效率较低的技术问题。
Description
技术领域
本申请涉及计算机领域,具体而言,涉及一种任务执行方法、装置和存储介质及电子设备。
背景技术
在多任务的执行场景中,由于各个任务的执行需依赖于其他任务执行完成后的数据,进而导致相关技术中,往往是按照顺序对多任务进行线性执行,这种执行方式虽然可拥有较高的稳定性,但执行效率较低,无法满足更高效率的任务执行需求。因此,存在任务执行效率较低的问题。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种任务执行方法、装置和存储介质及电子设备,以至少解决任务执行效率较低的技术问题。
根据本申请实施例的一个方面,提供了一种任务管理方法,包括:响应于对至少两个目标任务触发的执行请求,获取任务时序信息,其中,上述任务时序信息用于表示上述至少两个目标任务的执行时序;按照上述任务时序信息,从上述至少两个目标任务中确定出第一目标任务和第二目标任务,其中,上述第一目标任务在上述至少两个目标任务中的执行时序位于上述第二目标任务之前;指示第一任务节点执行第一阶段的第一目标任务,并在上述第一阶段的第一目标任务执行完成的情况下,得到第一子任务数据,其中,上述第一子任务数据为上述第一目标任务输出的部分任务数据;将上述第一子任务数据传输至第二任务节点关联的第一缓冲区,其中,上述第一缓冲区用于缓存上述第二任务节点执行第一阶段的第二目标任务时所需的任务数据;指示上述第二任务节点从上述第一缓冲区中读取上述第一子任务数据,并基于上述第一子任务数据指示上述第二任务节点执行上述第一阶段的第二目标任务;在基于上述第一子任务数据指示上述第二任务节点执行上述第一阶段的第二目标任务的过程中,指示第一任务节点执行第二阶段的第一目标任务,并在上述第二阶段的第一目标任务执行完成的情况下,得到第二子任务数据,其中,上述第二子任务数据为上述第一目标任务输出的、除上述第一子任务数据外的任务数据;将上述第二子任务数据传输至上述第二任务节点关联的第二缓冲区,其中,上述第二缓冲区用于缓存上述第二任务节点执行第二阶段的第二目标任务时所需的任务数据;指示上述第二任务节点从上述第二缓冲区中读取上述第二子任务数据,并基于上述第二子任务数据指示上述第二任务节点执行上述第二阶段的第二目标任务。
根据本申请实施例的另一方面,还提供了一种任务管理装置,包括:获取单元,用于响应于对至少两个目标任务触发的执行请求,获取任务时序信息,其中,上述任务时序信息用于表示上述至少两个目标任务的执行时序;确定单元,用于按照上述任务时序信息,从上述至少两个目标任务中确定出第一目标任务和第二目标任务,其中,上述第一目标任务在上述至少两个目标任务中的执行时序位于上述第二目标任务之前;第一执行单元,用于指示第一任务节点执行第一阶段的第一目标任务,并在上述第一阶段的第一目标任务执行完成的情况下,得到第一子任务数据,其中,上述第一子任务数据为上述第一目标任务输出的部分任务数据;第一传输单元,用于将上述第一子任务数据传输至第二任务节点关联的第一缓冲区,其中,上述第一缓冲区用于缓存上述第二任务节点执行第一阶段的第二目标任务时所需的任务数据;第一读取单元,用于指示上述第二任务节点从上述第一缓冲区中读取上述第一子任务数据,并基于上述第一子任务数据指示上述第二任务节点执行上述第一阶段的第二目标任务;第三执行单元,用于在基于上述第一子任务数据指示上述第二任务节点执行上述第一阶段的第二目标任务的过程中,指示第一任务节点执行第二阶段的第一目标任务,并在上述第二阶段的第一目标任务执行完成的情况下,得到第二子任务数据,其中,上述第二子任务数据为上述第一目标任务输出的、除上述第一子任务数据外的任务数据;第二传输单元,用于将上述第二子任务数据传输至上述第二任务节点关联的第二缓冲区,其中,上述第二缓冲区用于缓存上述第二任务节点执行第二阶段的第二目标任务时所需的任务数据;第二读取单元,用于指示上述第二任务节点从上述第二缓冲区中读取上述第二子任务数据,并基于上述第二子任务数据指示上述第二任务节点执行上述第二阶段的第二目标任务。
作为一种可选的方案,上述装置还包括:提示单元,用于在上述将上述第一子任务数据传输至第二任务节点关联的第一缓冲区之前,在指示上述第二任务节点从上述第一缓冲区中读取上述第一子任务数据的情况下,将任务提示信息传输至上述第一任务节点,其中,上述任务提示信息用于提示上述第一任务节点为上述第一缓冲区提供上述第一子任务数据。
作为一种可选的方案,上述装置还包括:设置单元,用于在上述将上述第一子任务数据传输至第二任务节点关联的第一缓冲区之前,创建上述第一缓冲区,并在上述第一缓冲区的创建过程中,将上述第一阶段的第一目标任务执行过程中得到的任务数据设置为禁止读取状态,其中,上述第一阶段的第一目标任务执行过程中得到的任务数据包括上述第一子任务数据。
作为一种可选的方案,上述第一传输单元,包括:传输模块,用于将上述第一子任务数据传输至第一目标节点关联的缓冲区和第二目标节点关联的缓冲区;上述第一读取单元,包括:第一读取模块,用于指示上述第一目标节点从上述第一目标节点关联的缓冲区中读取上述第一子任务数据,并基于上述第一子任务数据指示上述第一目标节点执行第一阶段的第一并行任务;以及,第二读取模块,用于指示上述第二目标节点从上述第二目标节点关联的缓冲区中读取上述第一子任务数据,并基于上述第一子任务数据指示上述第二目标节点执行第一阶段的第二并行任务;其中,上述第二目标任务包括上述第一并行任务和上述第二并行任务。
作为一种可选的方案,上述装置还包括:第四执行单元,用于在上述指示上述第二任务节点从上述第一缓冲区中读取上述第一子任务数据,并基于上述第一子任务数据指示上述第二任务节点执行上述第一阶段的第二目标任务之后,在上述第二任务节点执行上述第一阶段的第二目标任务完成的情况下得到第三子任务数据;第三传输单元,用于在上述指示上述第二任务节点从上述第一缓冲区中读取上述第一子任务数据,并基于上述第一子任务数据指示上述第二任务节点执行上述第一阶段的第二目标任务之后,将上述第三子任务数据传输至第三任务节点关联的第三缓冲区,其中,上述第三缓冲区用于缓存上述第三任务节点执行第一阶段的第三目标任务时所需的任务数据;第三读取单元,用于在上述指示上述第二任务节点从上述第一缓冲区中读取上述第一子任务数据,并基于上述第一子任务数据指示上述第二任务节点执行上述第一阶段的第二目标任务之后,指示上述第三任务节点从上述第三缓冲区中读取上述第三子任务数据,并基于上述第三子任务数据指示上述第三任务节点执行上述第一阶段的第三目标任务。
作为一种可选的方案,上述确定单元,包括:第五执行单元,用于执行以下步骤,直至将上述至少两个目标任务中的各个目标任务确定为上述第一目标任务和/或上述第二目标任务:从上述至少两个目标任务中确定出当前第一任务和当前第二任务,其中,上述当前第二任务在上述至少两个目标任务中的执行时序是上述当前第一任务的后一位;将上述当前第一任务确定为上述当前第二任务的第一目标任务,和将上述当前第二任务确定为上述当前第一任务的第二目标任务。
根据本申请实施例的又一方面,还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,上述处理器通过计算机程序执行上述的任务管理方法。
在本申请实施例中,响应于对至少两个目标任务触发的执行请求,获取任务时序信息,其中,上述任务时序信息用于表示上述至少两个目标任务的执行时序;按照上述任务时序信息,从上述至少两个目标任务中确定出第一目标任务和第二目标任务,其中,上述第一目标任务在上述至少两个目标任务中的执行时序位于上述第二目标任务之前;指示第一任务节点执行第一阶段的第一目标任务,并在上述第一阶段的第一目标任务执行完成的情况下,得到上述第一子任务数据,其中,上述第一子任务数据为上述第一目标任务输出的部分任务数据;将上述第一子任务数据传输至第二任务节点关联的第一缓冲区,其中,上述第一缓冲区用于缓存上述第二任务节点执行第一阶段的第二目标任务时所需的任务数据;指示上述第二任务节点从上述第一缓冲区中读取上述第一子任务数据,并基于上述第一子任务数据指示上述第二任务节点执行上述第一阶段的第二目标任务;在基于上述第一子任务数据指示上述第二任务节点执行上述第一阶段的第二目标任务的过程中,指示第一任务节点执行第二阶段的第一目标任务,并在上述第二阶段的第一目标任务执行完成的情况下,得到第二子任务数据,其中,上述第二子任务数据为上述第一目标任务输出的、除上述第一子任务数据外的任务数据;将上述第二子任务数据传输至上述第二任务节点关联的第二缓冲区,其中,上述第二缓冲区用于缓存上述第二任务节点执行第二阶段的第二目标任务时所需的任务数据;指示上述第二任务节点从上述第二缓冲区中读取上述第二子任务数据,并基于上述第二子任务数据指示上述第二任务节点执行上述第二阶段的第二目标任务。利用任务时序信息将待执行的多任务划分为时序在前的第一目标任务和时序在后的第二目标任务,以此为基础,先指示第一目标任务进行执行,但并不等第一目标任务执行完成后,再进行第二目标任务的执行,而是在第一目标任务已部分执行完成,并通过缓冲区得到第一目标任务输出的部分任务数据的情况下,指示第二目标任务的执行,进而达到了节省多任务执行过程中的等待时长的目的,从而实现了提高任务执行效率的技术效果,进而解决了任务执行效率较低的技术问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的一种可选的任务执行方法的应用环境的示意图;
图2是根据本申请实施例的一种可选的任务执行方法的流程的示意图;
图3是根据本申请实施例的一种可选的任务执行方法的示意图;
图4是根据本申请实施例的另一种可选的任务执行方法的示意图;
图5是根据本申请实施例的另一种可选的任务执行方法的示意图;
图6是根据本申请实施例的另一种可选的任务执行方法的示意图;
图7是根据本申请实施例的另一种可选的任务执行方法的示意图;
图8是根据本申请实施例的另一种可选的任务执行方法的示意图;
图9是根据本申请实施例的一种可选的内存接口管理的流程的示意图;
图10是根据本申请实施例的一种可选的多缓冲区管理初始化的流程的示意图;
图11是根据本申请实施例的一种可选的申请创建缓冲区的流程的示意图;
图12是根据本申请实施例的一种可选的申请创建缓冲区通知完成的流程的示意图;
图13是根据本申请实施例的一种可选的使用创建的缓冲区通知完成的流程的示意图;
图14是根据本申请实施例的另一种可选的使用创建的缓冲区通知完成的流程的示意图;
图15是根据本申请实施例的另一种可选的任务执行方法的示意图;
图16是根据本申请实施例的一种可选的多核系统间缓存同步的流程的示意图;
图17是根据本申请实施例的一种可选的任务执行装置的示意图;
图18是根据本申请实施例的一种可选的电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本申请实施例的一个方面,提供了一种任务执行方法,可选地,作为一种可选的实施方式,上述任务执行方法可以但不限于应用于如图1所示的环境中。其中,可以但不限于包括用户设备102以及服务器112,该用户设备102上可以但不限于包括显示器104、处理器106及存储器108,该服务器112包括数据库114以及处理引擎116。
具体过程可如下步骤:
步骤S102,用户设备102获取对至少两个目标任务(如目标任务A、目标任务B等)触发的执行请求;
步骤S104-S106,通过网络110将执行请求发送至服务器112;
步骤S108-S112,服务器112通过处理引擎116按照执行请求中携带的,或数据库114中存储的任务时序信息,从至少两个目标任务中确定出第一目标任务和第二目标任务,并指示第一目标任务进行执行,并在得到第一子任务数据的情况下,基于第一子任务数据指示第二目标任务进行执行;以及,在基于第一子任务数据执行第二目标任务的过程中,指示第一目标任务继续执行,并在得到第二子任务数据的情况下,基于第二子任务数据指示第二目标任务继续执行,直至得到多个目标任务的任务执行结果;
步骤S114-S116,通过网络110将任务执行结果发送至用户设备102,用户设备102通过处理器106将任务执行结果显示在显示器104,并将上述任务执行结果存储在存储器108。
除图1示出的示例之外,上述步骤可以由用户设备或服务器独立完成,或由用户设备和服务器共同协作完成,如由用户设备102执行上述从至少两个目标任务中确定出第一目标任务和第二目标任务、指示第一目标任务进行执行、指示第一目标任务继续执行、基于第二子任务数据指示第二目标任务继续执行等步骤,从而减轻服务器112的处理压力。该用户设备102包括但不限于手持设备(如手机)、笔记本电脑、平板电脑、台式电脑、车载设备、智能电视等,本申请并不限制用户设备102的具体实现方式。服务器112可以是单个的服务器或者是多个服务器组成的服务器集群,也可以是云服务器。
可选地,作为一种可选的实施方式,如图2所示,任务执行方法可以由电子设备执行,如图1所示的用户设备或服务器,具体步骤包括:
S202,响应于对至少两个目标任务触发的执行请求,获取任务时序信息,其中,任务时序信息用于表示至少两个目标任务的执行时序;
S204,按照任务时序信息,从至少两个目标任务中确定出第一目标任务和第二目标任务,其中,第一目标任务在至少两个目标任务中的执行时序位于第二目标任务之前;
S206,指示第一任务节点执行第一阶段的第一目标任务,并在第一阶段的第一目标任务执行完成的情况下,得到第一子任务数据,其中,第一子任务数据为第一目标任务输出的部分任务数据;
S208,将第一子任务数据传输至第二任务节点关联的第一缓冲区,其中,第一缓冲区用于缓存第二任务节点执行第一阶段的第二目标任务时所需的任务数据;
S210,指示第二任务节点从第一缓冲区中读取第一子任务数据,并基于第一子任务数据指示第二任务节点执行第一阶段的第二目标任务;
S212,在基于第一子任务数据指示第二任务节点执行第一阶段的第二目标任务的过程中,指示第一任务节点执行第二阶段的第一目标任务,并在第二阶段的第一目标任务执行完成的情况下,得到第二子任务数据,其中,第二子任务数据为第一目标任务输出的、除第一子任务数据外的任务数据;
S214,将第二子任务数据传输至第二任务节点关联的第二缓冲区,其中,第二缓冲区用于缓存第二任务节点执行第二阶段的第二目标任务时所需的任务数据;
S216,指示第二任务节点从第二缓冲区中读取第二子任务数据,并基于第二子任务数据指示第二任务节点执行第二阶段的第二目标任务。
可选地,在本实施例中,上述任务执行方法可以但不限于应用在对系统内任务并发时的场景中,首先对系统内任务并发时的场景进行分析得出相应的时序图,将此时序图的需求进行抽象,得到任务时序信息,以明确系统内各个任务的执行时序、执行关联关系等,进而按照任务时序信息对系统内任务进行并发的高效执行。
可选地,在本实施例中,任务时序信息用于表示至少两个目标任务的执行时序,如图3所示,将按照对至少两个目标任务302触发的执行请求,对至少两个目标任务302中的各个目标任务进行时序划分,并进一步生成对应的时序图304,在该时序图304中,显示至少两个目标任务302中的各个目标任务之间的时序关系、关联关系,如目标任务2、目标任务3、目标任务4的时序都在目标任务1之后,但目标任务2与目标任务1之间具有关联关系,而目标任务3、目标任务4与目标任务1无关联关系。
可选地,在本实施例中,第一目标任务在至少两个目标任务中的执行时序位于第二目标任务之前,其中,第一目标任务和第二目标任务可以但不限为至少两个目标任务中的任一目标任务,仅为举例说明,不对数量进行限定。
可选地,在本实施例中,第一子任务数据为第一目标任务输出的部分任务数据,第二子任务数据为第一目标任务输出的、除第一子任务数据外的任务数据,如图4所示,将第一目标任务402分为两个执行阶段(执行阶段A和执行阶段B),进而在执行阶段A完成后,会得到第一子任务数据404-1,在执行阶段B完成后,会得到第二子任务数据404-2。
需要说明的是,传统任务执行方式对于多内存的管理往往代码较为分散,没有统一的管理模块对内存进行管理,产生预期外的问题,而在本实施例中,使用统一的管理模块,利用任务时序信息将待执行的多任务划分为时序在前的第一目标任务和时序在后的第二目标任务,以此为基础,管理模块先指示第一目标任务进行执行,但并不等第一目标任务执行完成后,再进行第二目标任务的执行,而是在第一目标任务已部分执行完成,并通过缓冲区得到第一目标任务输出的部分任务数据的情况下,管理模块再指示第二目标任务与第一目标任务并行执行,进而达到了节省多任务执行过程中的等待时长的目的,从而实现了提高任务执行效率的技术效果。
进一步举例说明,可选的例如图5所示,响应于对至少两个目标任务(如目标任务1、目标任务2、目标任务n等)触发的执行请求,管理模块502获取任务时序信息504,其中,任务时序信息504用于表示至少两个目标任务的执行时序;按照任务时序信息504,从至少两个目标任务中确定出第一目标任务(如目标任务1)和第二目标任务(目标任务2);管理模块502指示第一目标任务进行执行,并在得到第一子任务数据的情况下,基于第一子任务数据指示第二目标任务进行执行,其中,第一子任务数据为第一目标任务输出的部分任务数据;在基于第一子任务数据执行第二目标任务的过程中,管理模块502指示第一目标任务继续执行,并在得到第二子任务数据的情况下,基于第二子任务数据指示第二目标任务继续执行,直至至少两个目标任务中的各个目标任务都已执行完成。
需要说明的是,缓冲区(Buffer)是计算机系统中用于临时存储数据的一块内存区域,常用于解决输入输出设备速度不匹配的问题。当数据从一个设备传输到另一个设备时,缓冲区可以起到临时存储和平衡数据流的作用。而本实施例中对于缓冲区的管理使用,并不是直接利用缓冲区缓存完整的任务数据,而是利用缓冲区缓存部分的任务子数据,进而保证多个任务可按顺序地同步执行。
进一步举例说明,可选的例如图6所示,指示第一任务节点602执行第一阶段的第一目标任务,并在第一阶段的第一目标任务执行完成的情况下,得到第一子任务数据;将第一子任务数据传输至第二任务节点604关联的第一缓冲区,其中,第一缓冲区用于缓存第二任务节点604执行第一阶段的第二目标任务时所需的任务数据;指示第二任务节点从第一缓冲区中读取第一子任务数据,并基于第一子任务数据指示第二任务节点604执行第一阶段的第二目标任务;在基于第一子任务数据指示第二任务节点604执行第一阶段的第二目标任务的过程中,指示第一任务节点602执行第二阶段的第一目标任务,并在第二阶段的第一目标任务执行完成的情况下,得到第二子任务数据;将第二子任务数据传输至第二任务节点604关联的第二缓冲区,其中,第二缓冲区用于缓存第二任务节点604执行第二阶段的第二目标任务时所需的任务数据;指示第二任务节点604从第二缓冲区中读取第二子任务数据,并基于第二子任务数据指示第二任务节点604执行第二阶段的第二目标任务。
通过本申请提供的实施例,响应于对至少两个目标任务触发的执行请求,获取任务时序信息,其中,任务时序信息用于表示至少两个目标任务的执行时序;按照任务时序信息,从至少两个目标任务中确定出第一目标任务和第二目标任务,其中,第一目标任务在至少两个目标任务中的执行时序位于第二目标任务之前;指示第一任务节点执行第一阶段的第一目标任务,并在第一阶段的第一目标任务执行完成的情况下,得到第一子任务数据,其中,第一子任务数据为第一目标任务输出的部分任务数据;将第一子任务数据传输至第二任务节点关联的第一缓冲区,其中,第一缓冲区用于缓存第二任务节点执行第一阶段的第二目标任务时所需的任务数据;指示第二任务节点从第一缓冲区中读取第一子任务数据,并基于第一子任务数据指示第二任务节点执行第一阶段的第二目标任务;在基于第一子任务数据指示第二任务节点执行第一阶段的第二目标任务的过程中,指示第一任务节点执行第二阶段的第一目标任务,并在第二阶段的第一目标任务执行完成的情况下,得到第二子任务数据,其中,第二子任务数据为第一目标任务输出的、除第一子任务数据外的任务数据;将第二子任务数据传输至第二任务节点关联的第二缓冲区,其中,第二缓冲区用于缓存第二任务节点执行第二阶段的第二目标任务时所需的任务数据;指示第二任务节点从第二缓冲区中读取第二子任务数据,并基于第二子任务数据指示第二任务节点执行第二阶段的第二目标任务。利用任务时序信息将待执行的多任务划分为时序在前的第一目标任务和时序在后的第二目标任务,以此为基础,先指示第一目标任务进行执行,但并不等第一目标任务执行完成后,再进行第二目标任务的执行,而是在第一目标任务已部分执行完成,并通过缓冲区得到第一目标任务输出的部分任务数据的情况下,指示第二目标任务的执行,进而达到了节省多任务执行过程中的等待时长的目的,从而实现了提高任务执行效率的技术效果。
作为一种可选的方案,在将第一子任务数据传输至第二任务节点关联的第一缓冲区之前,方法还包括:
在指示第二任务节点从第一缓冲区中读取第一子任务数据的情况下,将任务提示信息传输至第一任务节点,其中,任务提示信息用于提示第一任务节点为第一缓冲区提供第一子任务数据。
可选地,在本实施例中,为提高任务执行的多样性,可依据具体需求将任务的执行方式分为阻塞式和非阻塞式,其中,以第一子任务数据为例说明,阻塞式可以但不限于理解为在将第一子任务数据传输至第二任务节点关联的第一缓冲区之前,禁止请求从第一缓冲区中读取第一子任务数据,适用于对任务的执行稳定性要求较高的场景;而非阻塞式可以但不限于理解为在将第一子任务数据传输至第二任务节点关联的第一缓冲区之前,允许请求从第一缓冲区中读取第一子任务数据,但由于第一缓冲区中未存储有第一子任务数据,进而将用于提示第一任务节点为第一缓冲区提供第一子任务数据的任务提示信息传输至第一任务节点,适用于对任务的执行效率要求较高的场景。
作为一种可选的方案,在将第一子任务数据传输至第二任务节点关联的第一缓冲区之前,方法还包括:
创建第一缓冲区,并在第一缓冲区的创建过程中,将第一阶段的第一目标任务执行过程中得到的任务数据设置为禁止读取状态,其中,第一阶段的第一目标任务执行过程中得到的任务数据包括第一子任务数据。
可选地,在本实施例中,为提高数据的安全性,在第一缓冲区的创建过程中,将第一阶段的第一目标任务执行过程中得到的任务数据设置为禁止读取状态。
作为一种可选的方案,将第一子任务数据传输至第二任务节点关联的第一缓冲区,包括:将第一子任务数据传输至第一目标节点关联的缓冲区和第二目标节点关联的缓冲区;
指示第二任务节点从第一缓冲区中读取第一子任务数据,并基于第一子任务数据指示第二任务节点执行第一阶段的第二目标任务,包括:
指示第一目标节点从第一目标节点关联的缓冲区中读取第一子任务数据,并基于第一子任务数据指示第一目标节点执行第一阶段的第一并行任务;以及,指示第二目标节点从第二目标节点关联的缓冲区中读取第一子任务数据,并基于第一子任务数据指示第二目标节点执行第一阶段的第二并行任务;
其中,第二目标任务包括第一并行任务和第二并行任务。
需要说明的是,第二目标任务包括第一并行任务和第二并行任务,此处的第一并行任务和第二并行任务仅为举例说明,并不对数量进行限制。
进一步举例说明,可选的例如图7所示,第一目标任务702在至少两个目标任务中的执行时序位于第一并行任务704-1和第二并行任务704-2之前,且第一目标任务702和第一并行任务704-1、第一目标任务702和第二并行任务704-2之间都具有关联关系,进而可将第一并行任务704-1和第二并行任务704-2都视为第二目标任务,或者说在任务执行的过程中,可按照第二目标任务的执行逻辑并发执行第一并行任务704-1和第二并行任务704-2。
作为一种可选的方案,在指示第二任务节点从第一缓冲区中读取第一子任务数据,并基于第一子任务数据指示第二任务节点执行第一阶段的第二目标任务之后,方法还包括:
S1,在第二任务节点执行第一阶段的第二目标任务完成的情况下得到第三子任务数据;
S2,将第三子任务数据传输至第三任务节点关联的第三缓冲区,其中,第三缓冲区用于缓存第三任务节点执行第一阶段的第三目标任务时所需的任务数据;
S3,指示第三任务节点从第三缓冲区中读取第三子任务数据,并基于第三子任务数据指示第三任务节点执行第一阶段的第三目标任务。
进一步举例说明,可选的例如图8所示,在第二任务节点804执行第一阶段的第二目标任务完成的情况下,得到第三子任务数据;将第三子任务数据传输至第三任务节点806关联的第三缓冲区,其中,第三缓冲区用于缓存第三任务节点806执行第一阶段的第三目标任务时所需的任务数据;指示第三任务节点806从第三缓冲区中读取第三子任务数据,并基于第三子任务数据指示第三任务节点806执行第一阶段的第三目标任务;
其中,在本实施例中,按照执行顺序,第一任务节点802先执行,第二任务节点804再执行,然后第三任务节点806执行。具体的,在第一时刻,只有第一任务节点802执行第一阶段的第一目标任务;在第二时刻,第一任务节点802执行第二阶段的第一目标任务,同时第二任务节点804执行第一阶段的第二目标任务;在第三时刻,第一任务节点802执行第三阶段的第一目标任务,第二任务节点804执行第二阶段的第二目标任务,同时第三任务节点806执行第一阶段的第三目标任务,依次类推。此外,在本实施例中,第一、第二仅为举例说明,并不对数量进行限定,如第一阶段、第二阶段外,还可以但不限存在第三阶段、第四阶段等。
作为一种可选的方案,按照任务时序信息,从至少两个目标任务中确定出第一目标任务和第二目标任务,包括:
执行以下步骤,直至将至少两个目标任务中的各个目标任务确定为第一目标任务和/或第二目标任务:
S1,从至少两个目标任务中确定出当前第一任务和当前第二任务,其中,当前第二任务在至少两个目标任务中的执行时序是当前第一任务的后一位;
S2,将当前第一任务确定为当前第二任务的第一目标任务,和将当前第二任务确定为当前第一任务的第二目标任务。
需要说明的是,第一目标任务和第二目标任务可以但不限理解为相对概念,也即先确定在至少两个目标任务中的第一任务,再从至少两个目标任务中确定出与第一任务之间具有关联关系、且在至少两个目标任务中时序位于第一任务之后的第二任务,也即第二任务在至少两个目标任务中的执行时序是第一任务的后一位;
可选地,在本实施例中,第二任务相对于第一任务是第一任务的第二目标任务,同样第一任务相对于第二任务是第二任务的第一目标任务,进一步假设第三任务在至少两个目标任务中的执行时序是第二任务的后一位,则第三任务相对于第二任务是第二任务的第二目标任务,同样第二任务相对于第三任务是第三任务的第一目标任务。
作为一种可选的方案,为方便理解,将上述任务执行方法应用在程序设计中对任务的管理场景,传统的程序设计中对任务的管理往往是通过顺序执行的方法。对于性能要求不高的业务需求此方法使用方便,维护成本低,可作为通用的设计方案。但是当程序需求对时间要求比较严格时往往需要程序设计中使用并发机制管理任务执行,此时传统的设计方式对于多内存的管理往往代码较为分散,没有统一的管理模块对内存进行管理,产生预期外的问题。但是这样的程序设计并不符合架构设计思想,在较大的系统中类似的分散管理会造成代码臃肿、可维护性差、扩展性低的缺点。虽然对于一个系统中各个子功能的管理方式大致统一,但是也会遇到需要特殊处理的业务需求。此时分散管理此部分会造成代码可读性差以及回溯性低,同时并不符合软件设计中开闭原则。
可选地,在本实施例中,将多缓冲区管理抽象并进行封装,并根据业务可能的问题点进行抽象,使代码实现业务逻辑时思路更清晰,代码更简洁,实现了可移植性强、维护成本低、应用场景多的优点。
进一步举例说明,可选地,例如对系统内任务并发时的场景进行分析得出相应的时序图,将此时序图的需求进行抽象。通过对问题的抽象将多缓冲区的操作进行扩展提出了阻塞与非阻塞的管理方式,以及对于数据保护以及数据分发的通用方法,如多缓冲管理初始化、申请创建缓冲区(如第一缓冲区、第二缓冲区)、申请创建缓冲区完成、使用创建缓冲区、使用创建缓冲区完成等。
再者,本实施例以多缓冲区的管理为基础,还设计了多子节点(消息接收节点)数据分发机制,保证由主节点(消息发布节点)将数据创建后,各个子节点可以依次获取到相应数据而不产生冲突以及避免数据丢失,其中,在本实施例中,可以但不限将第一任务节点理解为主节点,而接受第一任务节点传输的数据的第二任务节点则可以但不限理解为子节点;或,还可以但不限将第一任务节点和第二任务节点都理解为子节点,而主节点则为传输数据至第一任务节点的数据源。另外阻塞与非阻塞模式也保证了程序可以满足特殊需求,使模块拥有灵活使用的特点。
可选地,在本实施例中,缓冲区个数为每个缓冲区对象的缓冲区个数,个数会影响模块对外方法的返回值以及模块内部管理时可被创建以及被使用的缓冲区个数,此数量没有严格要求,可根据系统内的架构设计进行分配。
可选地,在本实施例中,对于子节点个数,由于在程序使用中某一个主节点的数据可能会被其他子节点使用,此时需要保证数据可以无误地分发给各个子节点。设计思想主要为各个子节点有自己单独的内存管理状态,大家在获取时只单独获取自己节点的状态即可。当其他子节点获取数据完成时并不影响本节点获取本节点应获取的第一个缓冲区。各个节点通过在各个时间点依次获取主节点的数据可以将数据无误地接收完成。
可选地,在本实施例中,对于多缓冲区内存管理模式,为满足不同的设计需求,本实施例在进行设计时,还抽象了关于阻塞的属性,可以在初始化时进行配置,分为阻塞式与非阻塞式管理。阻塞式的含义为必须有数据被创建时子节点才有权限进行读取,而非阻塞式指当没有数据进行创建时子节点在获取数据时并不会提示错误而会把当前未被使用的内存通知给上层,满足子节点的接收节奏快、主节点的发送节奏慢的使用场景。
可选地,在本实施例中,当创建缓冲区时只能有一个节点进行创建缓冲区,程序架构设计时将此节点定为首次使用相关内存的节点。当创建缓冲区时会检查内存池中是否被其他节点均读取完成的缓冲区,当有这部分缓冲区时会反馈给上层通知这部分内存可以被创建。此时上层可以根据这部分内存的相应索引或者相应ID进行数据处理。同时程序设计为了保证内存在读写时可以被保护,所以将创建缓冲区分为两个步骤,如创建缓冲区以及创建缓冲区完成。
相关技术中,在实施这两个步骤中间,可以对相应缓冲区进行读写,使代码的灵活性提高。但是,本申请实施例中,在创建缓冲区完成步骤未实施前,此部分内存并不会被创建完成而是处于一个受保护的状态。此时其他子节点此时无法对这部分内存进行读取,从而保证了数据的安全性。
当此时上层在阻塞模式下强制读取时,模块本身会返回给上层一个错误标识。若出现此错误需要检查程序中是否有时序不完整的以及未被考虑的地方从而使系统也有了相应的系统自动检查机制。
然后对于使用缓冲区也提出了相应的抽象概念,与创建缓冲区类似的,也分为使用创建缓冲区以及使用创建缓冲区完成两个步骤,这调用这两个方法代码之间可以对内存进行相应的读或写操作,在此时数据是受保护状态,只有当使用创建缓冲区完成后此部分内存才会被重新创建,从而保证了各个子节点的数据是完整的数据并且保证了安全性。
此模块作为单独的模块对内存进行管理,在使用时可以对上层进行隔离并抽象。包括相应的校验方式可以有单独的模块进行管理,内存管理模块只去管理内存和相关的业务需求,而不需考虑具体的业务需求,继而提供给上层的接口可以动态申请以及动态配置。实现了程序的开闭原则。由此解决了传统设计方式中代码冗余、可维护性差等缺点。对于多核和单核系统中,时序的具体配置,应遵循保证时序相互有关系的任务同时运行的原则进行设计。
可选地,在本实施例中,如图9所示,具体步骤如下:
对于S902,为多缓冲区管理初始化,对于整套系统而言,需要进行需求分析,设计满足系统需求的时序图,判断系统中的消息流向,通过不同种消息确定需要创建多缓冲管理对象的个数以及每一个对象对应的子节点个数。通过如上分析,即可以在系统运行前,将各个多缓冲区管理对象进行初始化。程序流程图参考图10所示,如调用初始化接口,输入缓冲区(Buff)个数以及子节点个数,进一步判断Buff个数是否大于0、且子节点个数是否大于0,若否,则返回上层相应的错误码,若是,则根据Buff个数配置队列长度,根据Buff个数申请队列个数及相应的队列管理内存,再者对相应内存的初值进行初始化。
对于S904,需根据系统设计时序中本缓冲对象第一次使用缓冲区开始的时间点作为创建缓冲区的位置。程序流程图参考图11所示,调用申请创建缓存区接口,输入内存管理句柄,以及子节点ID,进一步判断内存管理句柄和子节点ID有无越界,若是,则返回给上层数据错误的错误代码,若否,则判断各个子节点队列是否队满,即判断缓冲区对象中是否有缓冲区处于空闲状态,若是,则返回给上层当前不能进行存储的错误码,若否,则返回给上层目前可以存储的内存Buff ID。
对于S906,需根据系统设计时序中本缓冲对象第一次使用缓冲区结束的时间点作为创建缓冲区完成的位置。程序流程图参考图12所示,调用申请创建缓存区接口,输入内存管理句柄,以及子节点ID,进一步判断内存管理句柄和子节点ID有无越界,若是,则返回给上层数据错误的错误码,若否,则判断各子节点队伍是否满,若是,则返回给上层当前不能进行存储的错误码,若否,则将队列存储队尾进行处理,相当于将队列中写入一个元素,即设置当前缓冲区为可读状态,并返回给上层操作完成。
对于S908,需根据系统设计时序中本缓冲对象子节点使用缓冲区开始的时间点作为使用创建缓冲区的位置。程序流程图参考图13所示,调用申请创建缓存区接口,输入内存管理句柄,以及子节点ID,进一步判断内存管理句柄和子节点ID有无越界,若是,则返回给上层数据错误的错误码,若否,则判断子节点队列是否非空,即判断是否有缓冲区处于空闲状态,若否,则返回给上层当前不能进行读取的错误码,若是,则返回给上层目标可以读取的内存Buff ID。
对于S910,需根据系统设计时序中本缓冲对象子节点使用缓冲区结束的时间点作为使用创建缓冲区结束的位置。程序流程图参考图14所示,调用申请创建缓冲区接口,输入内存管理句柄,以及子节点ID,进一步判断内存管理句柄和子节点ID有无越界,若是,则返回给上层数据错误的错误码,若否,则判断子节点队列是否非空,若否,则返回给上层当前不能进行读取的错误码,若是,则将队列存储队首进行处理,相当于将队列中读取一个元素,并返回给上层操作完成。
进一步以图15所示为例说明,可选地,对于图15中的(a)和图15中的(b)所示的两种方式,显而易见的对于缓冲区的初始化是有差异的,即需要在图15中的(a)中缓冲区初始化设置缓冲区对象的缓冲长度为2,即双buffer。而图15中的(b)中缓冲区初始化设置缓冲区对象的缓冲长度为3,即3buffer。子节点数量均为2,即两个子节点,第一个子节点表示B任务,第二个子节点表示C任务。
而对于如何在B任务完成后通知C任务可以运行,这个操作需要在架构设计阶段给出具体方案,一般采用任务间通讯或者多核间总线数据通知的方案。在多核系统中涉及到多核之间对多缓冲区管理的时候,会遇到同时操作一个缓冲区对象的情况,由于不同内核不一定有能力获取另外一个内核的地址,因此在各个内核中分别创建相同的缓冲区。在各自相应的时间点对上述几种方法进行调用可以实现两个内核之间同步管理的设计目的。而尽量不要使用一些简单粗暴的同步方式,例如将下一步骤的任务应获取的数据内存ID强制放在共享内存中。这部分出于对系统运行的敏感度也应清楚这又回到了分散管理的设计误区中,而且没有办法对多子节点的管理,或管理起来难度极大,问题出现后解决问题的难度也相应提高。
参考图16所示,描述的是主处理器有新数据需要被协处理器接收时,将新数据放在第一个Buf(缓冲区)中,触发一种通讯方式例如核间通讯,此时协处理器接收到主处理器的消息时即认为第一个Buf(缓冲区)内存可读。
如上为什么图15中的(b)中缓冲区长度应设置为3,是因为如果缓冲区长度设置是2,在图16中也可以看出:在第一个时间时刻,系统只处理A任务。在第二个时间时刻,系统处理A和B任务,此时A任务处理的是第二个时间时刻的数据,而B任务处理的是A任务创建的第一个时间时刻数据。在第三个时间时刻,系统处理ABC三个任务,此时B任务处理的是A任务创建的第二个时间时刻数据,而C任务处理的是A任务创建的第一个时间时刻数据,此时若只给A使用的缓冲区对象2个缓冲区,此时C任务还没有释放完数据,A任务将没有可用的缓冲区空间进行创建。如果A任务强制越过管理模块,强制将数据写入到第一个时间时刻的数据缓冲中,C任务处理的数据将会与B任务结束的数据不一致,此时一定会导致系统问题。
通过本申请提供的实施例,将多缓冲区管理抽象并进行封装。并根据业务可能的问题点进行抽象,使代码实现业务逻辑时思路更清晰,代码更简洁。实现了可移植性强、维护成本低、应用场景多的优点。
可以理解的是,在本申请的具体实施方式中,涉及到用户信息等相关的数据,当本申请以上实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
根据本申请实施例的另一个方面,还提供了一种用于实施上述任务执行方法的任务执行装置。如图17所示,该装置包括:
获取单元1702,用于响应于对至少两个目标任务触发的执行请求,获取任务时序信息,其中,任务时序信息用于表示至少两个目标任务的执行时序;
确定单元1704,用于按照任务时序信息,从至少两个目标任务中确定出第一目标任务和第二目标任务,其中,第一目标任务在至少两个目标任务中的执行时序位于第二目标任务之前;
第一执行单元1706,用于指示第一任务节点执行第一阶段的第一目标任务,并在第一阶段的第一目标任务执行完成的情况下,得到第一子任务数据,其中,第一子任务数据为第一目标任务输出的部分任务数据;
第一传输单元1708,用于将第一子任务数据传输至第二任务节点关联的第一缓冲区,其中,第一缓冲区用于缓存第二任务节点执行第一阶段的第二目标任务时所需的任务数据;
第一读取单元1710,用于指示第二任务节从第一缓冲区中读取第一子任务数据,并基于第一子任务数据指示第二任务节点执行第一阶段的第二目标任务;
第三执行单元1712,用于在基于第一子任务数据指示第二任务节点执行第一阶段的第二目标任务的过程中,指示第一任务节点执行第二阶段的第一目标任务,并在第二阶段的第一目标任务执行完成的情况下,得到第二子任务数据,其中,第二子任务数据为第一目标任务输出的、除第一子任务数据外的任务数据;
第二传输单元1714,用于将第二子任务数据传输至第二任务节点关联的第二缓冲区,其中,第二缓冲区用于缓存第二任务节点执行第二阶段的第二目标任务时所需的任务数据;
第二读取单元1716,用于指示第二任务节点从第二缓冲区中读取第二子任务数据,并基于第二子任务数据指示第二任务节点执行第二阶段的第二目标任务。
具体实施例可以参考上述任务执行装置中所示示例,本示例中在此不再赘述。
作为一种可选的方案,装置还包括:
提示单元,用于在将第一子任务数据传输至第二任务节点关联的第一缓冲区之前,在指示第二任务节点从第一缓冲区中读取第一子任务数据的情况下,将任务提示信息传输至第一任务节点,其中,任务提示信息用于提示第一任务节点为第一缓冲区提供第一子任务数据。
具体实施例可以参考上述任务执行方法中所示示例,本示例中在此不再赘述。
作为一种可选的方案,装置还包括:
设置单元,用于在将第一子任务数据传输至第二任务节点关联的第一缓冲区之前,创建第一缓冲区,并在第一缓冲区的创建过程中,将第一阶段的第一目标任务执行过程中得到的任务数据设置为禁止读取状态,其中,第一阶段的第一目标任务执行过程中得到的任务数据包括第一子任务数据。
具体实施例可以参考上述任务执行方法中所示示例,本示例中在此不再赘述。
作为一种可选的方案,第一传输单元1708,包括:传输模块,用于将第一子任务数据传输至第一目标节点关联的缓冲区和第二目标节点关联的缓冲区;
第一读取单元1710,包括:
第一读取模块,用于指示第一目标节点从第一目标节点关联的缓冲区中读取第一子任务数据,并基于第一子任务数据指示第一目标节点执行第一阶段的第一并行任务;以及,第二读取模块,用于指示第二目标节点从第二目标节点关联的缓冲区中读取第一子任务数据,并基于第一子任务数据指示第二目标节点执行第一阶段的第二并行任务;
其中,第二目标任务包括第一并行任务和第二并行任务。
具体实施例可以参考上述任务执行方法中所示示例,本示例中在此不再赘述。
作为一种可选的方案,装置还包括:
第四执行单元,用于在指示第二任务节点从第一缓冲区中读取第一子任务数据,并基于第一子任务数据指示第二任务节点执行第一阶段的第二目标任务之后,在第二任务节点执行第一阶段的第二目标任务完成的情况下得到第三子任务数据;
第三传输单元,用于在指示第二任务节点从第一缓冲区中读取第一子任务数据,并基于第一子任务数据指示第二任务节点执行第一阶段的第二目标任务之后,将第三子任务数据传输至第三任务节点关联的第三缓冲区,其中,第三缓冲区用于缓存第三任务节点执行第一阶段的第三目标任务时所需的任务数据;
第三读取单元,用于在指示第二任务节点从第一缓冲区中读取第一子任务数据,并基于第一子任务数据指示第二任务节点执行第一阶段的第二目标任务之后,指示第三任务节点从第三缓冲区中读取第三子任务数据,并基于第三子任务数据指示第三任务节点执行第一阶段的第三目标任务。
具体实施例可以参考上述任务执行方法中所示示例,本示例中在此不再赘述。
作为一种可选的方案,确定单元1704,包括:
第五执行单元,用于执行以下步骤,直至将至少两个目标任务中的各个目标任务确定为第一目标任务和/或第二目标任务:
从至少两个目标任务中确定出当前第一任务和当前第二任务,其中,当前第二任务在至少两个目标任务中的执行时序是当前第一任务的后一位;
将当前第一任务确定为当前第二任务的第一目标任务,和将当前第二任务确定为当前第一任务的第二目标任务。
具体实施例可以参考上述任务执行方法中所示示例,本示例中在此不再赘述。
根据本申请实施例的又一个方面,还提供了一种用于实施上述任务执行方法的电子设备,该电子设备可以但不限于为图1中所示的用户设备102或服务器112,本实施例以电子设备为用户设备102为例说明,进一步如图18所示,该电子设备包括存储器1802和处理器1804,该存储器1802中存储有计算机程序,该处理器1804被设置为通过计算机程序执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述电子设备可以位于计算机网络的多个网络设备中的至少一个网络设备。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,响应于对至少两个目标任务触发的执行请求,获取任务时序信息,其中,任务时序信息用于表示至少两个目标任务的执行时序;
S2,按照任务时序信息,从至少两个目标任务中确定出第一目标任务和第二目标任务,其中,第一目标任务在至少两个目标任务中的执行时序位于第二目标任务之前;
S3,指示第一任务节点执行第一阶段的第一目标任务,并在第一阶段的第一目标任务执行完成的情况下,得到第一子任务数据,其中,第一子任务数据为第一目标任务输出的部分任务数据;
S4,将第一子任务数据传输至第二任务节点关联的第一缓冲区,其中,第一缓冲区用于缓存第二任务节点执行第一阶段的第二目标任务时所需的任务数据;
S5,指示第二任务节点从第一缓冲区中读取第一子任务数据,并基于第一子任务数据指示第二任务节点执行第一阶段的第二目标任务;
S6,在基于第一子任务数据指示第二任务节点执行第一阶段的第二目标任务的过程中,指示第一任务节点执行第二阶段的第一目标任务,并在第二阶段的第一目标任务执行完成的情况下,得到第二子任务数据,其中,第二子任务数据为第一目标任务输出的、除第一子任务数据外的任务数据;
S7,将第二子任务数据传输至第二任务节点关联的第二缓冲区,其中,第二缓冲区用于缓存第二任务节点执行第二阶段的第二目标任务时所需的任务数据;
S8,指示第二任务节点从第二缓冲区中读取第二子任务数据,并基于第二子任务数据指示第二任务节点执行第二阶段的第二目标任务。
可选地,本领域普通技术人员可以理解,图18所示的结构仅为示意,图18其并不对上述电子设备的结构造成限定。例如,电子设备还可包括比图18中所示更多或者更少的组件(如网络接口等),或者具有与图18所示不同的配置。
其中,存储器1802可用于存储软件程序以及模块,如本申请实施例中的任务执行方法和装置对应的程序指令/模块,处理器1804通过运行存储在存储器1802内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的任务执行方法。存储器1802可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器1802可进一步包括相对于处理器1804远程设置的存储器,这些远程存储器可以通过网络连接至电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。其中,存储器1802具体可以但不限于用于存储候选探点集合、阻挡度以及目标探点集合等信息。作为一种示例,如图18所示,上述存储器1802中可以但不限于包括上述任务执行装置中的获取单元1702、确定单元1704、第一执行单元1706、第一传输单元1708、第一读取单元1710、第三执行单元1712、第二传输单元1714及第二读取单元1716。此外,还可以包括但不限于上述任务执行装置中的其他模块单元,本示例中不再赘述。
可选地,上述的传输装置1806用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置1806包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置1806为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
此外,上述电子设备还包括:显示器1808,用于显示上述任务时序信息、第一子任务数据、以及第二子任务数据等信息;和连接总线1810,用于连接上述电子设备中的各个模块部件。
在其他实施例中,上述用户设备或者服务器可以是一个分布式系统中的一个节点,其中,该分布式系统可以为区块链系统,该区块链系统可以是由该多个节点通过网络通信的形式连接形成的分布式系统。其中,节点之间可以组成点对点(Peer To Peer,简称P2P)网络,任意形式的计算设备,比如服务器、用户设备等电子设备都可以通过加入该点对点网络而成为该区块链系统中的一个节点。
根据本申请的一个方面,提供了一种计算机程序产品,该计算机程序产品包括计算机程序/指令,该计算机程序/指令包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质被安装。在该计算机程序被中央处理器执行时,执行本申请实施例提供的各种功能。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,电子设备的计算机系统仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
计算机系统包括中央处理器(Central Processing Unit,CPU),其可以根据存储在只读存储器(Read-Only Memory,ROM)中的程序或者从存储部分加载到随机访问存储器(Random Access Memory,RAM)中的程序而执行各种适当的动作和处理。在随机访问存储器中,还存储有系统操作所需的各种程序和数据。中央处理器、在只读存储器以及随机访问存储器通过总线彼此相连。输入/输出接口(Input/Output接口,即I/O接口)也连接至总线。
以下部件连接至输入/输出接口:包括键盘、鼠标等的输入部分;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分;包括硬盘等的存储部分;以及包括诸如局域网卡、调制解调器等的网络接口卡的通信部分。通信部分经由诸如因特网的网络执行通信处理。驱动器也根据需要连接至输入/输出接口。可拆卸介质,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器上,以便于从其上读出的计算机程序根据需要被安装入存储部分。
特别地,根据本申请的实施例,各个方法流程图中所描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质被安装。在该计算机程序被中央处理器执行时,执行本申请的系统中限定的各种功能。
根据本申请的一个方面,提供了一种计算机可读存储介质,计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现方式中提供的方法。
可选地,在本实施例中,上述计算机可读的存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,响应于对至少两个目标任务触发的执行请求,获取任务时序信息,其中,任务时序信息用于表示至少两个目标任务的执行时序;
S2,按照任务时序信息,从至少两个目标任务中确定出第一目标任务和第二目标任务,其中,第一目标任务在至少两个目标任务中的执行时序位于第二目标任务之前;
S3,指示第一任务节点执行第一阶段的第一目标任务,并在第一阶段的第一目标任务执行完成的情况下,得到第一子任务数据,其中,第一子任务数据为第一目标任务输出的部分任务数据;
S4,将第一子任务数据传输至第二任务节点关联的第一缓冲区,其中,第一缓冲区用于缓存第二任务节点执行第一阶段的第二目标任务时所需的任务数据;
S5,指示第二任务节点从第一缓冲区中读取第一子任务数据,并基于第一子任务数据指示第二任务节点执行第一阶段的第二目标任务;
S6,在基于第一子任务数据指示第二任务节点执行第一阶段的第二目标任务的过程中,指示第一任务节点执行第二阶段的第一目标任务,并在第二阶段的第一目标任务执行完成的情况下,得到第二子任务数据,其中,第二子任务数据为第一目标任务输出的、除第一子任务数据外的任务数据;
S7,将第二子任务数据传输至第二任务节点关联的第二缓冲区,其中,第二缓冲区用于缓存第二任务节点执行第二阶段的第二目标任务时所需的任务数据;
S8,指示第二任务节点从第二缓冲区中读取第二子任务数据,并基于第二子任务数据指示第二任务节点执行第二阶段的第二目标任务。
可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令电子设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的用户设备,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (9)
1.一种任务执行方法,其特征在于,包括:
响应于对至少两个目标任务触发的执行请求,获取任务时序信息,其中,所述任务时序信息用于表示所述至少两个目标任务的执行时序;
按照所述任务时序信息,从所述至少两个目标任务中确定出第一目标任务和第二目标任务,其中,所述第一目标任务在所述至少两个目标任务中的执行时序位于所述第二目标任务之前;
指示第一任务节点执行第一阶段的第一目标任务,并在所述第一阶段的第一目标任务执行完成的情况下,得到第一子任务数据,其中,所述第一子任务数据为所述第一目标任务输出的部分任务数据;
将所述第一子任务数据传输至第二任务节点关联的第一缓冲区,其中,所述第一缓冲区用于缓存所述第二任务节点执行第一阶段的第二目标任务时所需的任务数据;
指示所述第二任务节点从所述第一缓冲区中读取所述第一子任务数据,并基于所述第一子任务数据指示所述第二任务节点执行所述第一阶段的第二目标任务;
在基于所述第一子任务数据指示所述第二任务节点执行所述第一阶段的第二目标任务的过程中,指示第一任务节点执行第二阶段的第一目标任务,并在所述第二阶段的第一目标任务执行完成的情况下,得到第二子任务数据,其中,所述第二子任务数据为所述第一目标任务输出的、除所述第一子任务数据外的任务数据;
将所述第二子任务数据传输至所述第二任务节点关联的第二缓冲区,其中,所述第二缓冲区用于缓存所述第二任务节点执行第二阶段的第二目标任务时所需的任务数据;
指示所述第二任务节点从所述第二缓冲区中读取所述第二子任务数据,并基于所述第二子任务数据指示所述第二任务节点执行所述第二阶段的第二目标任务。
2.根据权利要求1所述的方法,其特征在于,在所述将所述第一子任务数据传输至第二任务节点关联的第一缓冲区之前,所述方法还包括:
在指示所述第二任务节点从所述第一缓冲区中读取所述第一子任务数据的情况下,将任务提示信息传输至所述第一任务节点,其中,所述任务提示信息用于提示所述第一任务节点为所述第一缓冲区提供所述第一子任务数据。
3.根据权利要求1所述的方法,其特征在于,在所述将所述第一子任务数据传输至第二任务节点关联的第一缓冲区之前,所述方法还包括:
创建所述第一缓冲区,并在所述第一缓冲区的创建过程中,将所述第一阶段的第一目标任务执行过程中得到的任务数据设置为禁止读取状态,其中,所述第一阶段的第一目标任务执行过程中得到的任务数据包括所述第一子任务数据。
4.根据权利要求1所述的方法,其特征在于,
所述将所述第一子任务数据传输至第二任务节点关联的第一缓冲区,包括:将所述第一子任务数据传输至第一目标节点关联的缓冲区和第二目标节点关联的缓冲区;
所述指示所述第二任务节点从所述第一缓冲区中读取所述第一子任务数据,并基于所述第一子任务数据指示所述第二任务节点执行所述第一阶段的第二目标任务,包括:
指示所述第一目标节点从所述第一目标节点关联的缓冲区中读取所述第一子任务数据,并基于所述第一子任务数据指示所述第一目标节点执行第一阶段的第一并行任务;以及,指示所述第二目标节点从所述第二目标节点关联的缓冲区中读取所述第一子任务数据,并基于所述第一子任务数据指示所述第二目标节点执行第一阶段的第二并行任务;
其中,所述第二目标任务包括所述第一并行任务和所述第二并行任务。
5.根据权利要求1所述的方法,其特征在于,在所述指示所述第二任务节点从所述第一缓冲区中读取所述第一子任务数据,并基于所述第一子任务数据指示所述第二任务节点执行所述第一阶段的第二目标任务之后,所述方法还包括:
在所述第二任务节点执行所述第一阶段的第二目标任务完成的情况下得到第三子任务数据;
将所述第三子任务数据传输至第三任务节点关联的第三缓冲区,其中,所述第三缓冲区用于缓存所述第三任务节点执行第一阶段的第三目标任务时所需的任务数据;
指示所述第三任务节点从所述第三缓冲区中读取所述第三子任务数据,并基于所述第三子任务数据指示所述第三任务节点执行所述第一阶段的第三目标任务。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述按照所述任务时序信息,从所述至少两个目标任务中确定出第一目标任务和第二目标任务,包括:
执行以下步骤,直至将所述至少两个目标任务中的各个目标任务确定为所述第一目标任务和/或所述第二目标任务:
从所述至少两个目标任务中确定出当前第一任务和当前第二任务,其中,所述当前第二任务在所述至少两个目标任务中的执行时序是所述当前第一任务的后一位;
将所述当前第一任务确定为所述当前第二任务的第一目标任务,和将所述当前第二任务确定为所述当前第一任务的第二目标任务。
7.一种任务管理装置,其特征在于,包括:
获取单元,用于响应于对至少两个目标任务触发的执行请求,获取任务时序信息,其中,所述任务时序信息用于表示所述至少两个目标任务的执行时序;
确定单元,用于按照所述任务时序信息,从所述至少两个目标任务中确定出第一目标任务和第二目标任务,其中,所述第一目标任务在所述至少两个目标任务中的执行时序位于所述第二目标任务之前;
第一执行单元,用于指示第一任务节点执行第一阶段的第一目标任务,并在所述第一阶段的第一目标任务执行完成的情况下,得到第一子任务数据,其中,所述第一子任务数据为所述第一目标任务输出的部分任务数据;
第一传输单元,用于将所述第一子任务数据传输至第二任务节点关联的第一缓冲区,其中,所述第一缓冲区用于缓存所述第二任务节点执行第一阶段的第二目标任务时所需的任务数据;
第一读取单元,用于指示所述第二任务节点从所述第一缓冲区中读取所述第一子任务数据,并基于所述第一子任务数据指示所述第二任务节点执行所述第一阶段的第二目标任务;
第三执行单元,用于在基于所述第一子任务数据指示所述第二任务节点执行所述第一阶段的第二目标任务的过程中,指示第一任务节点执行第二阶段的第一目标任务,并在所述第二阶段的第一目标任务执行完成的情况下,得到第二子任务数据,其中,所述第二子任务数据为所述第一目标任务输出的、除所述第一子任务数据外的任务数据;
第二传输单元,用于将所述第二子任务数据传输至所述第二任务节点关联的第二缓冲区,其中,所述第二缓冲区用于缓存所述第二任务节点执行第二阶段的第二目标任务时所需的任务数据;
第二读取单元,用于指示所述第二任务节点从所述第二缓冲区中读取所述第二子任务数据,并基于所述第二子任务数据指示所述第二任务节点执行所述第二阶段的第二目标任务。
8.一种计算机可读的存储介质,其特征在于,所述计算机可读的存储介质包括存储的程序,其中,所述程序被电子设备运行时执行所述权利要求1至6任一项中所述的方法。
9.一种电子设备,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行所述权利要求1至6任一项中所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310867750.8A CN116932210A (zh) | 2023-07-13 | 2023-07-13 | 任务执行方法、装置和存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310867750.8A CN116932210A (zh) | 2023-07-13 | 2023-07-13 | 任务执行方法、装置和存储介质及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116932210A true CN116932210A (zh) | 2023-10-24 |
Family
ID=88391798
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310867750.8A Pending CN116932210A (zh) | 2023-07-13 | 2023-07-13 | 任务执行方法、装置和存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116932210A (zh) |
-
2023
- 2023-07-13 CN CN202310867750.8A patent/CN116932210A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11010681B2 (en) | Distributed computing system, and data transmission method and apparatus in distributed computing system | |
CN108614726B (zh) | 虚拟机创建方法及装置 | |
CN112104723B (zh) | 一种多集群的数据处理系统及方法 | |
CN109493223B (zh) | 一种记账方法及装置 | |
CN109032796B (zh) | 一种数据处理方法和装置 | |
US20150347305A1 (en) | Method and apparatus for outputting log information | |
CN108319496B (zh) | 资源访问方法、业务服务器、分布式系统及存储介质 | |
WO2020215752A1 (zh) | 图计算方法及装置 | |
CN109634764A (zh) | 工作流控制方法、装置、设备、存储介质和系统 | |
CN108875381A (zh) | 一种支持内核模块隔离的消息服务模块的设计方案 | |
JP2009123201A (ja) | データを処理するためのサーバ‐プロセッサ・ハイブリッド・システムおよび方法 | |
CN115686805A (zh) | Gpu资源共享的方法和装置、调度gpu资源共享的方法和装置 | |
CN116112507A (zh) | 基于分层区块链多任务异步执行方法及装置 | |
US8812578B2 (en) | Establishing future start times for jobs to be executed in a multi-cluster environment | |
CN116820527B (zh) | 程序升级方法、装置、计算机设备和存储介质 | |
US20200097344A1 (en) | Enqueue-related processing based on timing out of an attempted enqueue | |
CN111190963A (zh) | 一种区块链应用后端系统 | |
CN116932210A (zh) | 任务执行方法、装置和存储介质及电子设备 | |
CN115361382A (zh) | 基于数据群组的数据处理方法、装置、设备和存储介质 | |
US11327785B2 (en) | Computing system including enhanced application performance based on last completed operation sequence value | |
CN113778700A (zh) | 消息处理方法、系统、介质和计算机系统 | |
Franks | Simulating layered queueing networks with passive resources. | |
WO2024140900A1 (zh) | 一种虚拟机的加速启动方法及其相关设备 | |
US20230195546A1 (en) | Message Management Method and Apparatus, and Serverless System | |
CN102681881A (zh) | 跨机调度方法及其系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |