并行任务处理方法和装置与流程

文档序号:11653952阅读:182来源:国知局
并行任务处理方法和装置与流程

本发明涉及计算机技术领域,尤其涉及一种并行任务处理方法和装置。



背景技术:

考虑到在计算机层面,对于请求的响应一般是采用任务流的方式,即,用户在前台发起一个任务a提交后台执行,随后又发起另一个任务b或多个任务。只有在这多个任务(a、b……)全部执行完成后,才会执行下一个逻辑模块。

针对上述情况,现有的做法是:评估任务执行时间,假设任务执行时间:任务b>任务a,那么任务a完成时,通知任务b,在任务b执行完后根据任务a反馈的状态再确定是否要继续执行下一个模块。

举例而言:用户购买付费会员,在提交订单后,后台运行扣款任务,页面继续让用户发起分享红包任务,在后台运行扣款任务后,判断用户是否分享红包决定是否发红包。然后继续下一步。即,发红包就是上述的下一个模块,扣款和分享就是上述任务a和任务b。

采用上述方式进行处理主要会存在以下几个问题:

1)考虑不到异常处理,以执行时间作为评估时间,然而,在实际执行的时候,可能由于硬件、网络、资源问题等,执行时间会发生偏差。例如:异常情况任务b执行后还没有得到任务a的反馈,从而导致执行下一个逻辑模块出错。

2)效率低,即使改进任务b执行后如果没收到任务a反馈时,处于等待状态。等任务a有反馈时继续执行,这样也会降低整个执行的效率,且,如果任务a一直没反馈,那么会造成大量的堆积现象的产生。

3)系统耦合性高,任务b是否继续或执行结果是否正确,将依赖于任务a的反馈,如果存在并行任务很多的情况,系统的复杂度会成倍上升。

针对上述问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供一种并行任务处理方法和装置,以达到有效提升并行任务处理效率,降低系统耦合性的技术效果。

一方面,本发明实施例提供了一种并行任务处理方法,包括:

确定并行任务组中当前任务是否执行完成;

如果执行完成,则将预先建立的对应于所述并行任务组的会话共享信号区中所述当前任务的执行状态调整为执行完成,其中,所述会话共享信号区用于存放对应的并行任务组中并行执行的各个任务的执行状态;

在确定所述会话共享信号区中各个任务的执行状态均处于执行完成的情况下,执行下一并行任务组中的任务,其中,所述下一并行任务组中的任务是需要依赖当前并行任务组中的各个任务均执行完成才能执行的任务。

在一个实施方式中,在确定所述会话共享信号区中存在执行状态处于未执行完成的任务的情况下,确定所述会话共享信号区是否超出预设的过期时长;

如果超出,则初始化所述会话共享信号区中的执行状态和过期时长。

在一个实施方式中,所述会话共享信号区中通过0和1标识任务的执行状态。

在一个实施方式中,在确定并行任务组中当前任务是否执行完成之前,所述方法还包括:

接收到并行任务组发起请求;

响应于所述并行任务组发起请求,建立所述并行任务组对应的会话共享信号区;

初始化所述会话共享信号区中的执行状态和过期时长。

在一个实施方式中,将预先建立的对应于所述并行任务组的会话共享信号区中所述当前任务的执行状态调整为执行完成,,包括:

获取所述当前任务的任务标识;

根据所述当前任务的任务标识,从所述会话共享信号区中查找出所述当前任务对应的执行状态;

将查找出的所述当前任务对应的执行状态调整为执行完成。

另一方面,本发明实施例提供了一种并行任务处理装置,包括:

第一确定模块,用于确定并行任务组中当前任务是否执行完成;

调整模块,用于在第一确定模块确定所述当前任务执行完成的情况下,将预先建立的对应于所述并行任务组的会话共享信号区中所述当前任务的执行状态调整为执行完成,其中,所述会话共享信号区用于存放对应的并行任务组中并行执行的各个任务的执行状态;

执行模块,用于在确定所述会话共享信号区中各个任务的执行状态均已经处于执行完成状态的情况下,执行下一并行任务组中的任务,其中,所述下一并行任务组中的任务是需要依赖当前并行任务组中的各个任务均执行完成才能执行的任务。

在一个实施方式中,上述装置还包括:

第二确定模块,用于在确定所述会话共享信号区中存在执行状态处于未执行完成的任务的情况下,确定所述会话共享信号区是否超出预设的过期时长;

第一初始化模块,用于在确定超出预设的过期时长的情况下,初始化所述会话共享信号区中的执行状态和过期时长。

在一个实施方式中,所述会话共享信号区中通过0和1标识任务的执行状态。

在一个实施方式中,上述装置还包括:

接收模块,用于在确定并行任务组中当前任务是否执行完成之前,接收到并行任务组发起请求;

建立模块,用于响应于所述并行任务组发起请求,建立所述并行任务组对应的会话共享信号区;

第二初始化模块,用于初始化所述会话共享信号区中的执行状体和过期时长。

在一个实施方式中,所述调整模块包括:

获取单元,用于获取所述当前任务的任务标识;

查找单元,用于根据所述当前任务的任务标识,从所述会话共享信号区中查找出所述当前任务对应的执行状态;

调整单元,用于将查找出的所述当前任务对应的执行状态调整为执行完成。

上述技术方案具有如下有益效果:通过设置会话共享信号区,并行任务组的各个任务都在执行完成后,到该会话共享信号区中修改执行状态,而避免了任务之间的相互交互和依赖,只需要通过该会话共享信号区中各个任务的执行状态标识即可确定并行任务是否已都执行完成,从而确定是否执行下一并行任务组。解决了现有的并行任务处理之间所存在的系统耦合性高、执行效率低下的技术问题,达到了有效降低系统耦合度,提高执行效率的技术效果。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是根据本发明实施例的并行任务处理方法流程图;

图2是根据本发明实施例的并行任务处理的共享信号区的示意图;

图3是根据本发明实施例的并行任务处理的逻辑流程图;

图4是根据本发明实施例的并行任务处理装置的结构框图。

具体实施方式

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

考虑到现有的并行任务相互之间存在依赖,即,先完成的任务需要向后完成的任务发送完成指示,在后完成的任务完成后,再执行下一个任务模块,即,下一并行任务组。这样任务之间依赖性太大,导致系统耦合度比较高,且效率低下。

为此,在本例中,提出了一种并行任务处理方法,通过设置会话共享信号区,并行任务组的各个任务都在执行完成后,到该会话共享信号区中修改执行状态,而避免了任务之间的相互交互和依赖,只需要通过该会话共享信号区中各个任务的执行状态标识即可确定并行任务是否已都执行完成,从而确定是否执行下一任务模块。

具体地,如图1所示,该并行任务处理方法可以包括如下步骤:

步骤101:确定并行任务组中当前任务是否执行完成;

即,假设当前任务组有5个并行执行的任务:任务a、任务b、任务c、任务d和任务e。只有这五个任务都执行完成之后,才可以执行下一个并行任务组。

具体的,对于每个任务而言,都可以确定自身是否执行完成。

步骤102:如果执行完成,则将预先建立的对应于所述并行任务组的会话共享信号区中所述当前任务的执行状态调整为执行完成,其中,所述会话共享信号区用于存放对应的并行任务组中并行执行的各个任务的执行状态;

在确定自身已经执行完成后,就可以到预设的会话共享信号区中,设置该任务为已完成状态。在该会话共享信号区中,可以为每个任务设置一个标识(例如taskid),这样,任务匹配自身的id,对自身的id所对应的指示信息进行修改,修改为已完成状态。

这样通过会话共享信号区就可以确定出是否并行任务组中的所有任务都已执行完成。

在实现的时候,可以采用0和1的方式标识任务是否完成,例如:0表示未完成,1表示已经完成。那么在进行共享信号区初始化的时候,就可以将每个任务对应的标示都初始化为0,在哪个任务执行完成后,就可以将自身对应的标识由0修改为1,从而表明该任务已完成。

步骤103:在确定所述会话共享信号区中各个任务的执行状态均处于执行完成的情况下,执行下一并行任务组中的任务,其中,所述下一并行任务组中的任务是需要依赖当前并行任务组中的各个任务均执行完成才能执行的任务。

考虑到会存在异常情况,有时有些任务由于网络或者硬件都原因无法执行完成,如果一直进行等待识别造成任务堆积,为此,可以为每个会话共享信号区设置一个过期时长,如果确定该会话共享信号区已经超出预设的过期时长,那么就将该会话共享信号区进行初始化操作,重新统计新的任务组。

如果在预设时长内,确定所有任务都执行完成了,那么可以触发执行下一任务模块,如果没有都完成,那么就继续等待。在实际实现的时候,在初始化之后,就可以等待接收任务执行成功信号以更新信号区。

对于上述所提及的下一任务模块中的任务或下一并行任务组中的任务可以是一个任务,也可以是一组多个并行任务,不过下一任务模块中的任务的执行,需要依赖前一并行任务组中的任务都执行完成,才可以执行。

在上述步骤101之前,还可以接收到并行任务组发起请求,然后,响应于所述并行任务组发起请求,建立所述会话共享信号区;初始化所述会话共享信号区中的指示信息和过期时长。

下面结合一具体实施例对上述并行任务处理方法进行说明,然而值得注意的是,该具体实施例仅是为了更好地说明本申请,并不构成对本申请的不当限定。

如图2所示,可以包括如下步骤:

s1:根据会话sessionid或uid建立任务共享信号区,初始化数据和过期时间。

该共享信号区可以如图3所示,标识任务组中的任务和每个任务的状态。

s2:接收来自不同任务传过来的成功信号,并更新改任务对应的信号状态。

s3:判断当前信号区的过期时间expiretime是否过期,如果过期执行步骤s1,

s4:读取满足执行任务的条件x,比较信号区信号数据是否满足条件x(即,所有任务对应的标识都为1)。

s5:如果满足条件,则执行对应的任务模块,如果不满足,则继续等待下一任务的成功信号。

在上例中,通过建立任务共享信号区,根据不同任务成功信号更新后的状态来执行满足条件的任务模块,达到了并行任务之间稳定无依赖的协同工作。充分考虑了异常情况,忽略任务执行时间不确定性,只关注最后的成功信号状态是否满足执行条件。设置会话过期时间,避免本次会话任务中止还存有过期的信号数据。进一步的,并行效率提升,并行任务在完成后只通知状态给共享信号区不需等待继续执行后续处理功能。缩短了任务执行时间。同时,系统耦合性降低,任务之间不存在交互,每个任务是和共享信号区通讯并有共享信号区自动触发满足条件任务,任务执行的流程只关心自己是否成功或失败,无需判断其它任务状态。

基于同一发明构思,本发明实施例中还提供了一种并行任务处理装置,如下面的实施例所述。由于并行任务处理装置解决问题的原理与并行任务处理方法相似,因此并行任务处理装置的实施可以参见并行任务处理方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。图4是本发明实施例的并行任务处理装置的一种结构框图,如图4所示,可以包括:第一确定模块401、调整模块402和执行模块403,下面对该结构进行说明。

第一确定模块401,用于确定并行任务组中当前任务是否执行完成;

调整模块402,用于在第一确定模块401确定所述当前任务执行完成的情况下,将预先建立的对应于所述并行任务组的会话共享信号区中所述当前任务的执行状态调整为执行完成,其中,所述会话共享信号区用于存放对应的并行任务组的各个任务的执行状态;

执行模块403,用于在确定所述会话共享信号区中各个任务的执行状态均已经处于执行完成状态的情况下,执行下一并行任务组中的任务,其中,所述下一并行任务组中的任务是需要依赖当前并行任务组中的各个任务均执行完成才能执行的任务。

在一个实施方式中,上述并行任务处理装置还可以包括:第二确定模块,用于确定所述会话共享信号区是否超出预设的过期时长;第一初始化模块,用于在确定超出预设的过期时长的情况下,初始化所述会话共享信号区中的执行状态和过期时长。

在一个实施方式中,上述会话共享信号区中可以通过0和1标识任务的执行状态。

在一个实施方式中,0表示对应的任务未执行完成,1表示对应的任务已执行完成。

在一个实施方式中,上述并行任务处理装置还可以包括:接收模块,用于在确定并行任务组中当前任务是否执行完成之前,接收到并行任务组发起请求;建立模块,用于响应于所述并行任务组发起请求,建立所述并行任务组对应的会话共享信号区;第二初始化模块,用于初始化所述会话共享信号区中执行状态和过期时长。

在一个实施方式中,上述调整模块402可以包括:获取单元,用于获取所述当前任务的任务标识;查找单元,用于根据所述当前任务的任务标识,从所述会话共享信号区中查找出所述当前任务对应的执行状态;调整单元,用于将查找出的所述当前任务对应的执行状态调整为执行完成。

上述技术方案具有如下有益效果:通过设置会话共享信号区,并行任务组的各个任务都在执行完成后,到该会话共享信号区中修改执行状态,而避免了任务之间的相互交互和依赖,只需要通过该会话共享信号区中各个任务的执行状态标识即可确定并行任务是否已都执行完成,从而确定是否执行下一并行任务组。解决了现有的并行任务处理之间所存在的系统耦合性高、执行效率低下的技术问题,达到了有效降低系统耦合度,提高执行效率的技术效果。

本领域技术人员还可以了解到本发明实施例列出的各种说明性逻辑块(illustrativelogicalblock),单元,和步骤可以通过电子硬件、电脑软件,或两者的结合进行实现。为清楚展示硬件和软件的可替换性(interchangeability),上述的各种说明性部件(illustrativecomponents),单元和步骤已经通用地描述了它们的功能。这样的功能是通过硬件还是软件来实现取决于特定的应用和整个系统的设计要求。本领域技术人员可以对于每种特定的应用,可以使用各种方法实现所述的功能,但这种实现不应被理解为超出本发明实施例保护的范围。

本发明实施例中所描述的各种说明性的逻辑块,或单元都可以通过通用处理器,数字信号处理器,专用集成电路(asic),现场可编程门阵列或其它可编程逻辑装置,离散门或晶体管逻辑,离散硬件部件,或上述任何组合的设计来实现或操作所描述的功能。通用处理器可以为微处理器,可选地,该通用处理器也可以为任何传统的处理器、控制器、微控制器或状态机。处理器也可以通过计算装置的组合来实现,例如数字信号处理器和微处理器,多个微处理器,一个或多个微处理器联合一个数字信号处理器核,或任何其它类似的配置来实现。

本发明实施例中所描述的方法或算法的步骤可以直接嵌入硬件、处理器执行的软件模块、或者这两者的结合。软件模块可以存储于ram存储器、闪存、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、可移动磁盘、cd-rom或本领域中其它任意形式的存储媒介中。示例性地,存储媒介可以与处理器连接,以使得处理器可以从存储媒介中读取信息,并可以向存储媒介存写信息。可选地,存储媒介还可以集成到处理器中。处理器和存储媒介可以设置于asic中,asic可以设置于用户终端中。可选地,处理器和存储媒介也可以设置于用户终端中的不同的部件中。

在一个或多个示例性的设计中,本发明实施例所描述的上述功能可以在硬件、软件、固件或这三者的任意组合来实现。如果在软件中实现,这些功能可以存储与电脑可读的媒介上,或以一个或多个指令或代码形式传输于电脑可读的媒介上。电脑可读媒介包括电脑存储媒介和便于使得让电脑程序从一个地方转移到其它地方的通信媒介。存储媒介可以是任何通用或特殊电脑可以接入访问的可用媒体。例如,这样的电脑可读媒体可以包括但不限于ram、rom、eeprom、cd-rom或其它光盘存储、磁盘存储或其它磁性存储装置,或其它任何可以用于承载或存储以指令或数据结构和其它可被通用或特殊电脑、或通用或特殊处理器读取形式的程序代码的媒介。此外,任何连接都可以被适当地定义为电脑可读媒介,例如,如果软件是从一个网站站点、服务器或其它远程资源通过一个同轴电缆、光纤电缆、双绞线、数字用户线(dsl)或以例如红外、无线和微波等无线方式传输的也被包含在所定义的电脑可读媒介中。所述的碟片(disk)和磁盘(disc)包括压缩磁盘、镭射盘、光盘、dvd、软盘和蓝光光盘,磁盘通常以磁性复制数据,而碟片通常以激光进行光学复制数据。上述的组合也可以包含在电脑可读媒介中。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1