CN102681894A - 一种多任务并发调度方法及系统 - Google Patents
一种多任务并发调度方法及系统 Download PDFInfo
- Publication number
- CN102681894A CN102681894A CN2011100562522A CN201110056252A CN102681894A CN 102681894 A CN102681894 A CN 102681894A CN 2011100562522 A CN2011100562522 A CN 2011100562522A CN 201110056252 A CN201110056252 A CN 201110056252A CN 102681894 A CN102681894 A CN 102681894A
- Authority
- CN
- China
- Prior art keywords
- task
- follow
- total control
- hash table
- tasks
- 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
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
一种多任务并发调度方法及系统,所述方法应用于可运行至少两个并行任务的调度系统中,包括:根据调度系统中各任务之间的关联关系,对于存在后继任务的每一任务,记录该任务与该任务的后继任务之间的第一对应关系;调度系统中设有总控任务,该总控任务的后继任务被设置为所述各任务中不存在前驱任务的任务;所述总控任务被调度后,并发调度所述总控任务的所有后继任务;对于所述各任务中的每一任务,在该任务执行完成后,判定该任务是否存在后继任务;若存在,则发起执行该任务的后继任务的流程。本发明提供了一种简单、高效、通用的多任务并发调度方案,使软件开发者可以利用现有的调度系统,轻松实现具有关联关系的多任务并发调度与控制。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种多任务并发调度方法及系统。
背景技术
软件开发者经常遇到任务调度及控制问题,比如每天指定时间进行网络设备数据上传,在数据上传时可以进行停止、暂停及恢复操作。如基于Java平台的软件开发者,可以使用Java平台提供的时钟组件或者各种任务调度组件(比如Quartz)完成任务调度工作,但这些组件并没有提供有关联关系的多任务并发调度与控制(包括:停止、暂停、恢复等操作)功能。同理,其它平台关联关系指任务之间存在并行或依赖关系。如图1所示,任务Ai、Bi、Ci(i为正整数)构成一个任务组,它们存在如下关系:
关系1:任务A1、B1、C1需要同时开始执行;
关系2:任务之间存在并行关系,比如任务A1、B1、C1需要并行执行;
关系3:任务之间存在依赖关系,比如任务A4依赖于任务A2及A3,即只有任务A2、A3都执行后,A4才能执行。
多任务的停止操作,指对处于运行状态的多任务组执行停止操作,将正在运行的任务运行完,其余没有运行的任务不再运行;
多任务的暂停操作,指对处于运行状态的多任务执行暂停操作,将正在运行的任务运行完,没有运行的任务不再运行,并记录已运行的任务及结果,为多任务恢复运行做准备;
多任务的恢复操作,指对处于暂停状态的多任务执行恢复操作,将暂停时没有运行的任务运行完,已经运行的任务不再重复运行。
目前软件开发者在解决上述有关联关系的多任务并发调度及控制问题时,一般处理方法如下:
1.引入工作流组件。但采用这种方法会造成开发难度和成本上升,需要消耗更多的系统资源(包括CPU、内存等);
2.根据具体情况将多个任务转化成一个任务,即将原有的各个任务转化为一个大任务的串行步骤。但这种方法没有很好的通用性和并发性,逻辑复杂且不方便修改维护。
发明内容
本发明的目的在于提供一种多任务并发调度方法及系统,以实现通用、简单、高效的多任务并发执行。
为解决上述问题,本发明提供了一种多任务并发调度方法,应用于可运行至少两个并行任务的调度系统中,包括:
根据所述调度系统中各任务之间的关联关系,对于存在后继任务的每一任务,记录该任务与该任务的后继任务之间的第一对应关系;
所述调度系统中设有总控任务,所述总控任务的后继任务被设置为所述各任务中不存在前驱任务的任务;
所述总控任务被调度后,并发调度所述总控任务的所有后继任务;对于所述各任务中的每一任务,在该任务执行完成后,判定该任务是否存在后继任务;若存在,则发起执行该任务的后继任务的流程。
进一步地,所述方法还包括:
根据所述各任务之间的关联关系,对于存在前驱任务的每一任务,记录该任务与该任务的前驱任务之间的第二对应关系;
所述发起执行该任务的后继任务的流程,具体包括:
根据所述第二对应关系判断该任务的后继任务的所有前驱任务是否均已执行完成;若均已执行完成,则调度该任务的后继任务;否则,待该任务的后继任务的所有前驱任务均已执行完成后再调度该任务的后继任务。
进一步地,
所述系统中至少设置有部分任务的任务执行条件;
所述调度该任务的后继任务,具体包括:判断系统中是否设置有该任务的后继任务对应的任务执行条件;若没有,则开始执行该任务的后继任务;否则,判断是否满足该任务的后继任务对应的执行条件,若满足,则开始执行该任务的后继任务;若不满足,则在满足该任务的后继任务对应的执行条件时再开始执行该任务的后继任务。
进一步地,所述方法还包括:
所述总控任务在所述调度系统中创建任务结果哈希表,所述任务结果哈希表中每条记录对应任务标识和任务结果两个字段;
当一任务执行完成后,所述调度系统将该任务的任务标识和任务结果添加到所述任务结果哈希表中;
根据所述第二对应关系判断该任务的后继任务的所有前驱任务是否均已执行完成,具体包括:
根据所述第二对应关系判断该任务的后继任务的所有前驱任务在所述任务结果哈希表中是否保存有记录。
进一步地,所述方法还包括:
所述根据所述第二对应关系判断该任务的后继任务的所有前驱任务在所述任务结果哈希表中是否保存有记录,具体包括:
在获取到所述任务结果哈希表的同步锁后,再根据所述第二对应关系判断该任务的后继任务的所有前驱任务在所述任务结果哈希表中是否保存有记录;在查找完成后,释放所述同步锁。
进一步地,所述方法还包括:
当收到用户发来的暂停命令或停止命令后,所述调度系统保存所述任务结果哈希表;
当收到用户发来的恢复命令时,所述调度系统重新调度所述总控任务,所述总控任务根据所述任务结果哈希表中的记录,重新调度所述任务结果哈希表中记录的任务的未执行过的后继任务。
进一步地,
所述总控任务的任务执行条件被设置为所述总控任务的后继任务的任务执行条件;
所述总控任务被调度,具体包括:
在满足所述总控任务的任务执行条件时,执行所述总控任务。
进一步地,所述方法还包括:
当所述调度系统运行于Java平台时,所述总控任务利用Java命名和目录接口技术,在人机交互界面上显示所述调度系统中执行的各任务的工作状态;
其中,所述工作状态包括:运行中、停止中、暂停中、已停止或已暂停。
进一步地,所述方法还包括:
所述总控任务在所述调度系统中创建线程池;
所述开始执行该任务的后继任务,具体包括:将该任务的后继任务放入所述线程池中进行处理。
相应地,本发明还提供了一种多任务并发调度系统,包括:
第一装置,用于根据所述调度系统中各任务之间的关联关系,对于存在后继任务的每一任务,记录该任务与该任务的后继任务之间的第一对应关系;
总控任务,所述总控任务的后继任务被设置为所述各任务中不存在前驱任务的任务;
第二装置,用于在所述总控任务被调度后,并发调度所述总控任务的所有后继任务;对于所述各任务中的每一任务,在该任务执行完成后,判定该任务是否存在后继任务;若存在,则发起执行该任务的后继任务的流程。
进一步地,所述系统还包括:
第三装置,用于根据所述各任务之间的关联关系,对于存在前驱任务的每一任务,记录该任务与该任务的前驱任务之间的第二对应关系;
所述发起执行该任务的后继任务的流程,具体包括:
所述第二装置用于根据所述第二对应关系判断该任务的后继任务的所有前驱任务是否均已执行完成;若均已执行完成,则调度该任务的后继任务;否则,待该任务的后继任务的所有前驱任务均已执行完成后再调度该任务的后继任务。
进一步地,
所述系统中至少设置有部分任务的任务执行条件;
所述调度该任务的后继任务,具体包括:所述第二装置用于判断系统中是否设置有该任务的后继任务对应的任务执行条件;若没有,则开始执行该任务的后继任务;否则,判断是否满足该任务的后继任务对应的执行条件,若满足,则开始执行该任务的后继任务;若不满足,则在满足该任务的后继任务对应的执行条件时再开始执行该任务的后继任务。
进一步地,
所述总控任务用于在所述调度系统中创建任务结果哈希表,所述任务结果哈希表中每条记录对应任务标识和任务结果两个字段;
所述系统中还包括第四装置,用于当一任务执行完成后,将该任务的任务标识和任务结果添加到所述任务结果哈希表中;
所述第二装置用于根据所述第二对应关系判断该任务的后继任务的所有前驱任务是否均已执行完成,具体包括:
所述第二装置用于根据所述第二对应关系判断该任务的后继任务的所有前驱任务在所述任务结果哈希表中是否保存有记录。
进一步地,
所述第二装置用于根据所述第二对应关系判断该任务的后继任务的所有前驱任务在所述任务结果哈希表中是否保存有记录,具体包括:
所述第二装置用于在获取到所述任务结果哈希表的同步锁后,再根据所述第二对应关系判断该任务的后继任务的所有前驱任务在所述任务结果哈希表中是否保存有记录;在查找完成后,释放所述同步锁。
进一步地,所述系统还包括:
第五装置,用于当收到用户发来的暂停命令或停止命令后,保存所述任务结果哈希表;
第六装置,用于当收到用户发来的恢复命令时,重新调度所述总控任务;
所述总控任务用于根据所述任务结果哈希表中的记录,重新调度所述任务结果哈希表中记录的任务的未执行过的后继任务。
进一步地,所述系统还包括:
所述总控任务还用于在所述调度系统中创建线程池;
所述开始执行该任务的后继任务,具体包括:所述总控任务用于将该任务的后继任务放入所述线程池中进行处理。
本发明提供了一种简单、高效、通用的多任务并发调度方案,使软件开发者可以利用现有的调度系统,轻松实现具有关联关系的多任务并发调度与控制,与现有实现方案相比,任务并发调度与控制(停止、暂停及恢复)不需要开发者编写任何代码,使开发者可以更专注于任务本身的工作。
附图说明
图1是现有技术中并发的多任务关系结构图;
图2是本发明实施例中多任务并发调度方法流程图;
图3是本发明实施例中系统中各任务的关系结构图;
图4是本发明实施例中任务抽象模型图;
图5是本发明实施例中总控任务并发调度及控制方法流程图;
图6是本发明实施例中线程池中运行后继任务流程图。
具体实施方式
下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
在本实施例中,如图2所示,多任务并发调度方法,应用于可运行至少两个并行任务的系统中,包括:
步骤1、根据各任务之间的关联关系,对于存在后继任务的每一任务,记录该任务与该任务的后继任务的第一对应关系;
步骤2、在上述系统中增设总控任务,该总控任务的后继任务被设置为上述各任务中不存在前驱任务的任务;
步骤3、总控任务被调度后,并发调度该总控任务的所有后继任务;对于系统中除所述总控任务外的每一任务,在该任务执行完成后,由总控任务根据上述第一对应关系判定该任务是否存在后继任务;若存在,则发起调度该任务的后继任务。
在本发明的另一实施例中,在步骤1中,根据各任务之间的关联关系,对于存在前驱任务的每一任务,还可以记录该任务与该任务的前驱任务之间的第二对应关系;在发起调度该任务的后继任务时,根据该第二对应关系判断该任务的后继任务的所有前驱任务是否均已执行完成;若均已执行完成,则调度该后继任务;否则,待该任务的后继任务的所有前驱任务均已执行完成后再调度该后继任务。
在本发明的另一实施例中,上述系统中至少设置有部分任务的任务执行条件;则调度一任务具体包括:判断系统中是否设置有该任务的任务执行条件;若没有,则执行该任务;否则,判断是否满足该任务的执行条件,若满足,则执行该任务;若不满足,则在满足该任务的执行条件时再执行该任务。
在本发明的另一实施例中,上述方法还包括:总控任务利用JNDI(Java Naming and Directory Interface,Java命名和目录接口)技术,在人机交互界面上显示系统中执行的除总控任务之外的其他各任务的工作状态。其中,工作状态包括:运行中、停止中及暂停中。
所述系统中设置有线程池;则执行一任务是指:将任务放入线程池中进行执行。
下面对本发明进行进一步说明。
在本实施例中建立任务的抽象模型,如图4将任务分为五个组成部分,包括:任务ID、任务工作、任务执行条件、任务关系及任务属性,具体说明如下:
任务ID:即任务标识符,用于唯一标识一个任务;
任务工作:任务具体要做的事情,比如打扫卫生任务,打扫卫生就是任务的工作;
任务执行条件:在满足一定的执行条件的前提下才能执行任务,比如每天6点打扫卫生,每天6点即是任务执行条件;
任务关系:用于记录本任务的前驱任务和后继任务;
任务属性:任务其他相关内容,比如任务创建时间、任务创建人、任务数据等。
本实施例采用树结构,用递归定义的方式记录任务之间的关系。
本实施例抽象出一个总控任务,结构如图3所示,它的工作是负责系统中其他任务的并发调度及控制,总控任务的任务执行条件与其后继任务的触发条件(等同于任务执行条件)相同,它的任务关系记录了自己的后继任务。
软件开发者使用本发明的任务抽象模型,创建自己的各个任务,并根据任务之间的依赖与并行关系,建立好各任务的关联,然后再与总控制任务关联。
将总控任务加入Java平台现有的调度系统。当总控任务被调度后,它负责并发调度自己的所有后继任务,调度时采用线程池技术提高调度的效率和安全性,采用Java的同步控制技术控制并发调度的正确性。
总控任务可通过JNDI技术,向软件开发者共享自己的任务调度状态;软件开发者可通过修改共享的任务调度状态,实现任务的停止与暂停。
总控任务在收到暂停命令后,会保存已执行过的任务及结果,软件开发者可以通过总控任务的ID查找到这些任务执行记录。软件开发者恢复任务调度时,首先通过JNDI技术共享任务执行记录,然后重新启动总控任务,总控任务会到JNDI中查找任务执行记录,然后继续执行没有执行的任务。
本发明的多任务并发调度方法实施方式分三步,包括:
步骤110、软件开发者根据上述抽象模型创建多个任务,并建立这些任务之间的关联关系(即使用本实施例的任务模型关联关系结构),然后创建一个总控制任务,设置其执行条件并与上述已创建的任务建立关联,最后将总控任务放入现有的任务调度系统(比如Timer、Quartz);
步骤120、当满足任务执行条件后,现有的调度系统调度总控任务,总控任务并发调度其后继任务,并发调度过程在后面说明;
步骤130、软件开发者在任务运行过程中,可使用总控任务共享的任务状态控制变量进行任务的停止或暂停操作;如果收到暂停命令,总控任务会自动保存当前任务的执行情况,为任务恢复执行做准备。任务暂停后,软件开发者可以通过在JNDI中共享任务上次执行情况,在重新运行总控任务后,总控任务会根据任务上次执行情况进行任务执行恢复工作。
如图5所示,总控制任务的任务并发调度过程,包括:
步骤210、为总控任务创建同步控制变量,包括如下步骤:
1. 创建一个同步变量TaskStatus,用于进行任务状态控制,初始化为正在运行,并放入JNDI中进行共享;
2. 创建一个同步变量RunningSubTasksNum,用于记录正在运行的后继任务数,初始值为0;
3. 创建一个同步变量TaskLock,用于控制执行总控任务的线程。
步骤220、总控任务创建执行任务的线程池,采用线程池技术可以防止因并发新建线程过多造成的系统崩溃,同时节省了反复创建线程的时间。为了减少线程池的数量,节省资源,可以将线程池缓存反复使用;
步骤230、总控任务创建任务结果记录表并初始化,在JNDI中创建本任务的任务结果哈希表TaskResultTable并放入总控任务的执行结果。该表中每一条记录对应两个字段,其中,字段Key用于记录任务ID,字段Value用于记录任务结果,这个结果只具备标识作用,用于表示总控任务的后继任务可以运行,以图3为例,当总控任务对应的Value的值不为空时,表示任务A1、B1、C1可以运行;
步骤240、总控任务获取可运行的后继任务,方法如下:
总控任务 采用树遍历算法,依次遍历总控任务的后继任务,如果发现一个后继任务可以运行,则不再遍历该后继任务的后继任务。其中,一个后继任务可运行的条件是:它的前驱任务都已执行完,即该后继任务的所有前驱任务在TaskResultTable中存在结果;
步骤250、总控任务判断是否有可执行的后继任务,如果没有则直接结束;如果有,则执行下一步骤;
步骤260、总控任务根据可执行的后继任务的数量对应修改变量RunningSubTasksNum的值;
步骤270、调度系统控制总控任务进入等待状态,即运行总控任务的线程在同步变量TaskLock上进入等待状态,所有后继任务运行完会唤醒这个线程继续运行;
步骤280、调度系统在线程池中并发运行步骤240获取的可执行的后继任务,具体流程在后续进行描述;
步骤290、后继任务运行结束后,调度系统唤醒总控任务。总控任务被唤醒后,检查任务状态TaskStatus的值,如果状态是暂停状态且有任务没有运行完,则保存TaskResultTable,供任务恢复时使用。其中,任务是否全部运行完可根据TaskResultTable中的记录数判断,若表中的记录数等于调度系统中所有任务(包括总控任务)的数目,则确定任务已全部运行完成;否则,确定任务未全部运行完成。
调度系统在线程池中运行后继任务的流程,如图6所示,包括:
步骤310、在JNDI中获取总控任务创建的变量TaskStatus的同步控制锁,可使用Java的同步关键字synchronized;
步骤320、检查TaskStatus的值,其值用于表示任务的当前状态,包括:正在运行、停止中、暂停中、已停止或已暂停;
步骤331、当该后继任务处于正在运行状态时,释放TaskStatus的同步控制锁,即退出synchronized同步控制块;
步骤332、执行该后继任务;
步骤333、该后继任务执行完成后,将正在运行的后继任务数减一,表示当前后继任务运行完;
步骤334、查找该后继任务的所有可运行后继任务,后继任务可运行的标准是它的前驱任务全部运行完。该查找过程需要在获取到TaskResultTable的同步锁后再进行,以防止在查找过程中TaskResultTable被修改;
步骤335、判断是否有可运行的后继任务;
步骤336、若有可运行的后继任务,在RunningSubTasksNum中同步增加可运行的后继任务数;
步骤337、将可运行的后继任务放入线程池中执行,这里是迭代调度,依靠这种调度并行执行所有后继任务,然后结束;
步骤338、若没有可运行的后继任务,则根据TaskResultTable表中记录的任务数判断系统中所有任务是否已执行完,如果表中记录的任务数等于总控任务加系统中除总控任务之外所有的任务的数目,则表示任务都运行完;
步骤339、通过同步变量TaskLock唤醒执行总控任务的线程;
步骤341、如果总控任务处于停止中或暂停中状态,检查是否有其他后继任务在运行,即判断RunningSubTasksNum的值是否等于1,等于1则表示没有其他后继任务在运行;
步骤342、若有其他后继任务在运行,将RunningSubTasksNum的值减一。
步骤343、若没有其他后继任务在运行,相应地设置TaskStatus的值表示停止或暂停;
步骤344、释放TaskStatus的同步控制锁,即退出synchronized同步控制块。
调度系统在收到停止或暂停命令时,停止/暂停正在执行的任务的过程步骤如下:
在JNDI中查找到需要停止/暂停的总控任务同步变量TaskStatus,设置其值表示任务状态为停止中/暂停中,正在运行的任务会根据任务状态停止或暂停。
调度系统在收到恢复命令时,恢复任务运行的步骤如下:
步骤510 将总控任务暂停时保存的任务执行结果表TaskResultTable放入JNDI中共享;
步骤520 重新运行总控任务,即可完成恢复操作。
相应地,本实施例中,一种多任务并发调度系统,包括:
第一装置,用于根据所述调度系统中各任务之间的关联关系,对于存在后继任务的每一任务,记录该任务与该任务的后继任务之间的第一对应关系;
总控任务,所述总控任务的后继任务被设置为所述各任务中不存在前驱任务的任务;
第二装置,用于在所述总控任务被调度后,并发调度所述总控任务的所有后继任务;对于所述各任务中的每一任务,在该任务执行完成后,判定该任务是否存在后继任务;若存在,则发起执行该任务的后继任务的流程。
较优地,所述系统还包括:
第三装置,用于根据所述各任务之间的关联关系,对于存在前驱任务的每一任务,记录该任务与该任务的前驱任务之间的第二对应关系;
所述发起执行该任务的后继任务的流程,具体包括:
所述第二装置用于根据所述第二对应关系判断该任务的后继任务的所有前驱任务是否均已执行完成;若均已执行完成,则调度该任务的后继任务;否则,待该任务的后继任务的所有前驱任务均已执行完成后再调度该任务的后继任务。
较优地,所述系统中至少设置有部分任务的任务执行条件;
所述调度该任务的后继任务,具体包括:所述第二装置用于判断系统中是否设置有该任务的后继任务对应的任务执行条件;若没有,则开始执行该任务的后继任务;否则,判断是否满足该任务的后继任务对应的执行条件,若满足,则开始执行该任务的后继任务;若不满足,则在满足该任务的后继任务对应的执行条件时再开始执行该任务的后继任务。
较优地,所述总控任务用于在所述调度系统中创建任务结果哈希表,所述任务结果哈希表中每条记录对应任务标识和任务结果两个字段;
所述系统中还包括第四装置,用于当一任务执行完成后,将该任务的任务标识和任务结果添加到所述任务结果哈希表中;
所述第二装置用于根据所述第二对应关系判断该任务的后继任务的所有前驱任务是否均已执行完成,具体包括:
所述第二装置用于根据所述第二对应关系判断该任务的后继任务的所有前驱任务在所述任务结果哈希表中是否保存有记录。
较优地,所述第二装置用于根据所述第二对应关系判断该任务的后继任务的所有前驱任务在所述任务结果哈希表中是否保存有记录,具体包括:
所述第二装置用于在获取到所述任务结果哈希表的同步锁后,再根据所述第二对应关系判断该任务的后继任务的所有前驱任务在所述任务结果哈希表中是否保存有记录;在查找完成后,释放所述同步锁。
较优地,所述系统还包括:
第五装置,用于当收到用户发来的暂停命令或停止命令后,保存所述任务结果哈希表;
第六装置,用于当收到用户发来的恢复命令时,重新调度所述总控任务;
所述总控任务用于根据所述任务结果哈希表中的记录,重新调度所述任务结果哈希表中记录的任务的未执行过的后继任务。
较优地,所述系统还包括:
所述总控任务还用于在所述调度系统中创建线程池;
所述开始执行该任务的后继任务,具体包括:所述总控任务用于将该任务的后继任务放入所述线程池中进行处理。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
以上所述仅为本发明的优选实施例而已,并非用于限定本发明的保护范围。根据本发明的发明内容,还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (16)
1.一种多任务并发调度方法,应用于可运行至少两个并行任务的调度系统中,包括:
根据所述调度系统中各任务之间的关联关系,对于存在后继任务的每一任务,记录该任务与该任务的后继任务之间的第一对应关系;
所述调度系统中设有总控任务,所述总控任务的后继任务被设置为所述各任务中不存在前驱任务的任务;
所述总控任务被调度后,并发调度所述总控任务的所有后继任务;对于所述各任务中的每一任务,在该任务执行完成后,判定该任务是否存在后继任务;若存在,则发起执行该任务的后继任务的流程。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述各任务之间的关联关系,对于存在前驱任务的每一任务,记录该任务与该任务的前驱任务之间的第二对应关系;
所述发起执行该任务的后继任务的流程,具体包括:
根据所述第二对应关系判断该任务的后继任务的所有前驱任务是否均已执行完成;若均已执行完成,则调度该任务的后继任务;否则,待该任务的后继任务的所有前驱任务均已执行完成后再调度该任务的后继任务。
3.如权利要求2所述的方法,其特征在于,
所述系统中至少设置有部分任务的任务执行条件;
所述调度该任务的后继任务,具体包括:判断系统中是否设置有该任务的后继任务对应的任务执行条件;若没有,则开始执行该任务的后继任务;否则,判断是否满足该任务的后继任务对应的执行条件,若满足,则开始执行该任务的后继任务;若不满足,则在满足该任务的后继任务对应的执行条件时再开始执行该任务的后继任务。
4.如权利要求2或3所述的方法,其特征在于,所述方法还包括:
所述总控任务在所述调度系统中创建任务结果哈希表,所述任务结果哈希表中每条记录对应任务标识和任务结果两个字段;
当一任务执行完成后,所述调度系统将该任务的任务标识和任务结果添加到所述任务结果哈希表中;
根据所述第二对应关系判断该任务的后继任务的所有前驱任务是否均已执行完成,具体包括:
根据所述第二对应关系判断该任务的后继任务的所有前驱任务在所述任务结果哈希表中是否保存有记录。
5.如权利要求4所述的方法,其特征在于,所述方法还包括:
所述根据所述第二对应关系判断该任务的后继任务的所有前驱任务在所述任务结果哈希表中是否保存有记录,具体包括:
在获取到所述任务结果哈希表的同步锁后,再根据所述第二对应关系判断该任务的后继任务的所有前驱任务在所述任务结果哈希表中是否保存有记录;在查找完成后,释放所述同步锁。
6.如权利要求4所述的方法,其特征在于,所述方法还包括:
当收到用户发来的暂停命令或停止命令后,所述调度系统保存所述任务结果哈希表;
当收到用户发来的恢复命令时,所述调度系统重新调度所述总控任务,所述总控任务根据所述任务结果哈希表中的记录,重新调度所述任务结果哈希表中记录的任务的未执行过的后继任务。
7.如权利要求3所述的方法,其特征在于,
所述总控任务的任务执行条件被设置为所述总控任务的后继任务的任务执行条件;
所述总控任务被调度,具体包括:
在满足所述总控任务的任务执行条件时,执行所述总控任务。
8.如权利要求3所述的方法,其特征在于,所述方法还包括:
当所述调度系统运行于Java平台时,所述总控任务利用Java命名和目录接口技术,在人机交互界面上显示所述调度系统中执行的各任务的工作状态;
其中,所述工作状态包括:运行中、停止中、暂停中、已停止或已暂停。
9.如权利要求3所述的方法,其特征在于,所述方法还包括:
所述总控任务在所述调度系统中创建线程池;
所述开始执行该任务的后继任务,具体包括:将该任务的后继任务放入所述线程池中进行处理。
10.一种多任务并发调度系统,包括:
第一装置,用于根据所述调度系统中各任务之间的关联关系,对于存在后继任务的每一任务,记录该任务与该任务的后继任务之间的第一对应关系;
总控任务,所述总控任务的后继任务被设置为所述各任务中不存在前驱任务的任务;
第二装置,用于在所述总控任务被调度后,并发调度所述总控任务的所有后继任务;对于所述各任务中的每一任务,在该任务执行完成后,判定该任务是否存在后继任务;若存在,则发起执行该任务的后继任务的流程。
11.如权利要求10所述的系统,其特征在于,所述系统还包括:
第三装置,用于根据所述各任务之间的关联关系,对于存在前驱任务的每一任务,记录该任务与该任务的前驱任务之间的第二对应关系;
所述发起执行该任务的后继任务的流程,具体包括:
所述第二装置用于根据所述第二对应关系判断该任务的后继任务的所有前驱任务是否均已执行完成;若均已执行完成,则调度该任务的后继任务;否则,待该任务的后继任务的所有前驱任务均已执行完成后再调度该任务的后继任务。
12.如权利要求11所述的系统,其特征在于,
所述系统中至少设置有部分任务的任务执行条件;
所述调度该任务的后继任务,具体包括:所述第二装置用于判断系统中是否设置有该任务的后继任务对应的任务执行条件;若没有,则开始执行该任务的后继任务;否则,判断是否满足该任务的后继任务对应的执行条件,若满足,则开始执行该任务的后继任务;若不满足,则在满足该任务的后继任务对应的执行条件时再开始执行该任务的后继任务。
13.如权利要求11或12所述的系统,其特征在于:
所述总控任务用于在所述调度系统中创建任务结果哈希表,所述任务结果哈希表中每条记录对应任务标识和任务结果两个字段;
所述系统中还包括第四装置,用于当一任务执行完成后,将该任务的任务标识和任务结果添加到所述任务结果哈希表中;
所述第二装置用于根据所述第二对应关系判断该任务的后继任务的所有前驱任务是否均已执行完成,具体包括:
所述第二装置用于根据所述第二对应关系判断该任务的后继任务的所有前驱任务在所述任务结果哈希表中是否保存有记录。
14.如权利要求13所述的系统,其特征在于:
所述第二装置用于根据所述第二对应关系判断该任务的后继任务的所有前驱任务在所述任务结果哈希表中是否保存有记录,具体包括:
所述第二装置用于在获取到所述任务结果哈希表的同步锁后,再根据所述第二对应关系判断该任务的后继任务的所有前驱任务在所述任务结果哈希表中是否保存有记录;在查找完成后,释放所述同步锁。
15.如权利要求13所述的系统,其特征在于,所述系统还包括:
第五装置,用于当收到用户发来的暂停命令或停止命令后,保存所述任务结果哈希表;
第六装置,用于当收到用户发来的恢复命令时,重新调度所述总控任务;
所述总控任务用于根据所述任务结果哈希表中的记录,重新调度所述任务结果哈希表中记录的任务的未执行过的后继任务。
16.如权利要求12所述的系统,其特征在于,所述系统还包括:
所述总控任务还用于在所述调度系统中创建线程池;
所述开始执行该任务的后继任务,具体包括:所述总控任务用于将该任务的后继任务放入所述线程池中进行处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011100562522A CN102681894A (zh) | 2011-03-09 | 2011-03-09 | 一种多任务并发调度方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011100562522A CN102681894A (zh) | 2011-03-09 | 2011-03-09 | 一种多任务并发调度方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102681894A true CN102681894A (zh) | 2012-09-19 |
Family
ID=46813863
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011100562522A Pending CN102681894A (zh) | 2011-03-09 | 2011-03-09 | 一种多任务并发调度方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102681894A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104536811A (zh) * | 2014-12-26 | 2015-04-22 | 广州华多网络科技有限公司 | 基于hive任务的任务调度方法及装置 |
CN104899093A (zh) * | 2014-03-04 | 2015-09-09 | 华为技术有限公司 | 数据处理方法、装置和系统 |
CN105159706A (zh) * | 2015-08-07 | 2015-12-16 | 北京思特奇信息技术股份有限公司 | 一种流程化程序页面配置的执行方法及系统 |
CN105516259A (zh) * | 2015-11-27 | 2016-04-20 | 北京奇虎科技有限公司 | 一种信息发送方法和装置 |
CN106095540A (zh) * | 2016-05-31 | 2016-11-09 | 上海萌果信息科技有限公司 | 一种基于Quartz框架的任务流程处理方法 |
CN107094045A (zh) * | 2017-04-17 | 2017-08-25 | 中国航空无线电电子研究所 | 一种面向通信卫星的多功能综合业务通用接入方法 |
CN107209688A (zh) * | 2015-01-26 | 2017-09-26 | 高通股份有限公司 | 用于加速任务控制流的方法和系统 |
CN107463391A (zh) * | 2016-06-03 | 2017-12-12 | 阿里巴巴集团控股有限公司 | 任务处理方法、装置及设备 |
CN107832130A (zh) * | 2017-10-31 | 2018-03-23 | 中国银行股份有限公司 | 一种银行系统的作业流调度执行方法、装置及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1818868A (zh) * | 2006-03-10 | 2006-08-16 | 浙江大学 | 嵌入式操作系统多任务并行启动优化实现方法 |
CN101408850A (zh) * | 2008-11-27 | 2009-04-15 | 中国人民解放军信息工程大学 | 任务流计算模型 |
CN101477474A (zh) * | 2009-01-04 | 2009-07-08 | 中国科学院计算技术研究所 | 一种联合模拟系统及其工作方法 |
WO2010001353A1 (en) * | 2008-07-02 | 2010-01-07 | Nxp B.V. | A multiprocessor circuit using run-time task scheduling |
-
2011
- 2011-03-09 CN CN2011100562522A patent/CN102681894A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1818868A (zh) * | 2006-03-10 | 2006-08-16 | 浙江大学 | 嵌入式操作系统多任务并行启动优化实现方法 |
WO2010001353A1 (en) * | 2008-07-02 | 2010-01-07 | Nxp B.V. | A multiprocessor circuit using run-time task scheduling |
CN101408850A (zh) * | 2008-11-27 | 2009-04-15 | 中国人民解放军信息工程大学 | 任务流计算模型 |
CN101477474A (zh) * | 2009-01-04 | 2009-07-08 | 中国科学院计算技术研究所 | 一种联合模拟系统及其工作方法 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104899093A (zh) * | 2014-03-04 | 2015-09-09 | 华为技术有限公司 | 数据处理方法、装置和系统 |
WO2015131542A1 (zh) * | 2014-03-04 | 2015-09-11 | 华为技术有限公司 | 数据处理方法、装置和系统 |
US10067793B2 (en) | 2014-03-04 | 2018-09-04 | Huawei Technologies Co., Ltd. | Data processing method and apparatus for executing task code using reservation instruction and release instruction |
CN104899093B (zh) * | 2014-03-04 | 2018-06-05 | 华为技术有限公司 | 数据处理方法、装置和系统 |
CN104536811B (zh) * | 2014-12-26 | 2018-10-16 | 广州华多网络科技有限公司 | 基于hive任务的任务调度方法及装置 |
CN104536811A (zh) * | 2014-12-26 | 2015-04-22 | 广州华多网络科技有限公司 | 基于hive任务的任务调度方法及装置 |
CN107209688A (zh) * | 2015-01-26 | 2017-09-26 | 高通股份有限公司 | 用于加速任务控制流的方法和系统 |
CN105159706A (zh) * | 2015-08-07 | 2015-12-16 | 北京思特奇信息技术股份有限公司 | 一种流程化程序页面配置的执行方法及系统 |
CN105516259A (zh) * | 2015-11-27 | 2016-04-20 | 北京奇虎科技有限公司 | 一种信息发送方法和装置 |
CN105516259B (zh) * | 2015-11-27 | 2019-06-04 | 北京奇虎科技有限公司 | 一种信息发送方法和装置 |
CN106095540B (zh) * | 2016-05-31 | 2020-01-03 | 上海萌果信息科技有限公司 | 一种基于Quartz框架的任务流程处理方法 |
CN106095540A (zh) * | 2016-05-31 | 2016-11-09 | 上海萌果信息科技有限公司 | 一种基于Quartz框架的任务流程处理方法 |
CN107463391A (zh) * | 2016-06-03 | 2017-12-12 | 阿里巴巴集团控股有限公司 | 任务处理方法、装置及设备 |
CN107094045A (zh) * | 2017-04-17 | 2017-08-25 | 中国航空无线电电子研究所 | 一种面向通信卫星的多功能综合业务通用接入方法 |
CN107832130A (zh) * | 2017-10-31 | 2018-03-23 | 中国银行股份有限公司 | 一种银行系统的作业流调度执行方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102681894A (zh) | 一种多任务并发调度方法及系统 | |
Wang et al. | Efficient task replication for fast response times in parallel computation | |
US8990820B2 (en) | Runtime task with inherited dependencies for batch processing | |
CN102521712B (zh) | 一种流程实例数据处理方法和装置 | |
CN110502340A (zh) | 一种资源动态调整方法、装置、设备及存储介质 | |
CN102520925B (zh) | Aadl2tasm模型转换方法 | |
CN103473129B (zh) | 线程数目可伸缩的多任务队列调度系统及其实现方法 | |
CN101510163B (zh) | 一种计划任务的处理方法及系统 | |
CN102541651A (zh) | 一种嵌入式虚拟机的实时调度系统 | |
CN103294533A (zh) | 任务流控制方法及系统 | |
US20120185293A1 (en) | Workflow management system and method for implementing workflow definition tool | |
CN106155781A (zh) | 一种多智能体平台中的实时任务调度方法 | |
CN103136030A (zh) | 虚拟机管理系统及方法 | |
US20140366037A1 (en) | Planning Execution of Tasks with Dependency Resolution | |
Guo et al. | The concurrent consideration of uncertainty in WCETs and processor speeds in mixed-criticality systems | |
CN102043668B (zh) | 一种嵌入式实时操作系统中任务多次激活的方法 | |
Henzinger et al. | Scheduling large jobs by abstraction refinement | |
AU2015288125B2 (en) | Control in initiating atomic tasks on a server platform | |
CN103631594A (zh) | 通用流程异步调度方法及系统 | |
CN101996091B (zh) | 实现支持多种流程运行的图形执行虚拟机系统及其方法 | |
Dong et al. | Flexible mixed-criticality scheduling with dynamic slack management | |
CN105227648A (zh) | 一种基于时间桶的地铁综合监控系统时间序列触发方法 | |
Guo et al. | Implementing mixed-criticality systems upon a preemptive varying-speed processor | |
CN107479945B (zh) | 一种虚拟机资源调度方法及装置 | |
Robinson et al. | Linking the Witness Simulation Software to an Expert System to Represent a Decision–Making Process |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20120919 |