任务处理方法和装置.pdf

上传人:62****3 文档编号:1281710 上传时间:2018-04-12 格式:PDF 页数:11 大小:413.12KB
返回 下载 相关 举报
摘要
申请专利号:

CN201010299851.2

申请日:

2010.09.29

公开号:

CN101963922A

公开日:

2011.02.02

当前法律状态:

授权

有效性:

有权

法律详情:

专利权人的姓名或者名称、地址的变更IPC(主分类):G06F9/46变更事项:专利权人变更前:用友软件股份有限公司变更后:用友网络科技股份有限公司变更事项:地址变更前:100094 北京市海淀区北清路68号用友软件园变更后:100094 北京市海淀区北清路68号|||授权|||实质审查的生效IPC(主分类):G06F 9/46申请日:20100929|||公开

IPC分类号:

G06F9/46; G06F9/52

主分类号:

G06F9/46

申请人:

用友软件股份有限公司

发明人:

王昊沙

地址:

100094 北京市海淀区北清路68号用友软件园

优先权:

专利代理机构:

北京友联知识产权代理事务所(普通合伙) 11343

代理人:

尚志峰;汪海屏

PDF下载: PDF下载
内容摘要

本发明提供了一种任务处理方法,包括:步骤102,接收输入的任务;步骤104,判断任务是否具有同步属性,在任务具有同步属性时,进入步骤106,在任务不具有同步属性时,进入步骤110;步骤106,根据任务的同步属性,在当前执行任务中查找任务对应的排他任务;步骤108,在当前执行任务中存在任务对应的排他任务时,不执行任务,直至当前执行任务中不存在任务对应的排他任务,步骤110,执行任务。本发明还提供了一种任务处理装置。根据本发明的技术方案,将具有约束关系的任务进行同步排队,避免了任务之间的竞争,然后利用优先级调节队列中任务的执行滞后性,同时通过等待队列和设置任务数可同时执行任务的最大数目,使负载能力可控,具有良好的系统伸缩性。

权利要求书

1: 一种任务处理方法, 其特征在于, 包括 : 步骤 102, 接收输入的任务 ; 步骤 104, 判断所述任务是否具有同步属性, 在所述任务具有同步属性时, 进入步骤 106, 在所述任务不具有同步属性时, 进入步骤 110 ; 所述步骤 106, 根据所述任务的同步属性, 在当前执行任务中查找所述任务对应的排他 任务 ; 步骤 108, 在当前执行任务中存在所述任务对应的排他任务时, 不执行所述任务, 直至 所述当前执行任务中不存在所述任务对应的排他任务, 所述步骤 110, 执行所述任务。
2: 根据权利要求 1 所述的任务处理方法, 其特征在于, 所述步骤 108 中, 在当前执行任 务中存在所述任务对应的排他任务时, 根据所述任务的同步属性, 将所述任务分配至对应 的排他队列, 在所述当前执行任务中不存在所述任务对应的排他任务时, 从所述任务对应 的排他队列里取出所述任务, 以待执行。
3: 根据权利要求 2 所述的任务处理方法, 其特征在于, 排他队列中的所有任务均具有 优先级, 从所述排他队列中取出任务时, 先取出优先级最高的任务。
4: 根据权利要求 2 所述的任务处理方法, 其特征在于, 在所述步骤 110 中, 所述任务通 过线程池提供的线程执行。
5: 根据权利要求 4 所述的任务处理方法, 其特征在于, 在所述步骤 110 中, 所述当前执 行任务占用所述线程池的所有线程时, 使所述任务进入等待状态, 直至所述线程池中存在 空余线程, 使用所述空余线程执行所述任务。
6: 根据权利要求 5 所述的任务处理方法, 其特征在于, 处于所述等待状态的所有任务 均具有优先级, 在所述线程池里仅出现一个空余线程时, 将所述一个空余线程用于执行优 先级最高的任务。
7: 根据权利要求 2 至 6 中任一项所述的任务处理方法, 其特征在于, 所述步骤 108 中, 所述任务具有多个同步属性, 以及在当前执行任务中存在对应任务的不同同步属性的多个 排他任务, 根据所述不同同步属性的优先程度, 将所述任务分配至优先程度最高的同步属 性对应的排他队列, 排他队列包括 : 全局排他队列, 所述全局排他队列中的任务只能单独执行 ; 类别排他队列, 所述类别排他队列中的任务不能与所述类别排他队列对应类型的任务 同时执行。
8: 一种任务处理装置, 其特征在于, 包括 : 调度模块, 判断输入的任务是否具有同步属性, 在所述任务具有同步属性时, 将所述 任务提交至同步控制模块, 在所述任务不具有同步属性时, 将所述任务提交至任务执行模 块; 所述同步控制模块, 根据所述任务的同步属性, 在当前执行任务中查找所述任务对应 的排他任务, 并在所述当前执行任务中不存在所述任务对应的排他任务时, 将所述任务通 过所述调度模块提交至所述任务执行模块 ; 所述任务执行模块, 执行所述任务。 2
9: 根据权利要求 8 所述的任务处理装置, 其特征在于, 还包括 : 同步队列模块, 提供排他队列, 所述同步控制模块在当前执行任务中存在所述任务对 应的排他任务时, 根据所述任务的同步属性, 通过所述同步队列模块将所述任务分配至对 应的排他队列, 在所述当前执行任务中不存在所述任务对应的排他任务时, 通过所述同步 队列模块从所述任务对应的排他队列里取出所述任务, 由所述调度模块将所述任务提交至 所述任务执行模块, 以待执行。
10: 根据权利要求 9 所述的任务处理装置, 其特征在于, 所述同步队列模块还供用户制 定不同类型的排他队列。

说明书


任务处理方法和装置

    【技术领域】
     本发明涉及任务处理技术, 尤其涉及任务处理方法和装置。背景技术 在企业管理软件中, 存在大量的异步任务, 比如发送各种通知 ( 消息, 短信, 电子 邮件等 ), 执行某些自动动作 ( 自动调用服务等 )。随着用户压力的增加, 在短时间内会产 生大量的这些任务。已有的解决方法一般分为两种 : 一种是将这些任务排入一个先入先出 (FIFO) 队列, 然后一个个按顺序执行 ; 另外一种则是通过一个线程池, 多线程的将任务并 行执行。前者的优点是不会由于任务过多而占用大量的系统资源, 缺点是浪费了计算机并 行处理能力, 效率低下。后者的优点是尽可能的最大化利用了系统的并行计算能力, 但缺 点也很明显, 一方面由于同时执行的任务可能存在约束或竞争关系, 导致需要线程同步, 就 带来了额外的系统开销 ( 线程切换, 锁竞争等 ), 在任务之间约束和竞争关系比较多的情况 下, 反而会造成系统效率低下, 另一方面由于大部分线程池无法提供很好的伸缩性 ( 负载
     可控 ), 造成大负载情况下对系统资源的过度占用, 极大的影响了用户体验。
     因此, 需要一种任务处理方式, 能够最大限度地利用计算机的并行能力, 而又避免 由于任务之间的约束带来的线程同步, 耗费系统资源的问题。 发明内容
     鉴于以上, 本发明的技术方案所要解决的技术问题在于, 提供一种任务处理方法 和装置, 能够最大限度地利用计算机的并行能力, 而又避免由于任务之间的约束带来的线 程同步, 耗费系统资源的问题。
     本发明提供了一种任务处理方法, 包括 : 步骤 102, 接收输入的任务 ; 步骤 104, 判 断所述任务是否具有同步属性, 在所述任务具有同步属性时, 进入步骤 106, 在所述任务不 具有同步属性时, 进入步骤 110 ; 所述步骤 106, 根据所述任务的同步属性, 在当前执行任务 中查找所述任务对应的排他任务 ; 步骤 108, 在当前执行任务中存在所述任务对应的排他 任务时, 不执行所述任务, 直至所述当前执行任务中不存在所述任务对应的排他任务, 所述 步骤 110, 执行所述任务。通过该技术方案, 可以避免同时执行任务时由于相互竞争导致对 系统资源的争夺, 保证了执行任务的次序和效率, 合理利用计算机的系统资源。
     在上述技术方案中, 优选地, 所述步骤 108 中, 在当前执行任务中存在所述任务对 应的排他任务时, 根据所述任务的同步属性, 将所述任务分配至对应的排他队列, 在所述当 前执行任务中不存在所述任务对应的排他任务时, 从所述任务对应的排他队列里取出所述 任务, 以待执行。
     在上述技术方案中, 优选地, 排他队列中的所有任务均具有优先级, 从所述排他队 列中取出任务时, 先取出优先级最高的任务。通过该技术方案, 通过优先级调节, 保证了任 务执行的次序。
     在上述技术方案中, 优选地, 在所述步骤 110 中, 所述任务通过线程池提供的线程执行。 在上述技术方案中, 优选地, 在所述步骤 110 中, 所述当前执行任务占用所述线程 池的所有线程时, 使所述任务进入等待状态, 直至所述线程池中存在空余线程, 使用所述空 余线程执行所述任务。通过该技术方案, 可以很好地控制系统的伸缩性。
     在上述技术方案中, 优选地, 处于所述等待状态的所有任务均具有优先级, 在所述 线程池里仅出现一个空余线程时, 将所述一个空余线程用于执行优先级最高的任务。通过 该技术方案, 使得等待队列中的任务也具有优先级。
     在上述技术方案中, 优选地, 所述步骤 108 中, 所述任务具有多个同步属性, 以及 在当前执行任务中存在对应任务的不同同步属性的多个排他任务, 根据所述不同同步属性 的优先程度, 将所述任务分配至优先程度最高的同步属性对应的排他队列, 排他队列包括 : 全局排他队列, 所述全局排他队列中的任务只能单独执行 ; 类别排他队列, 所述类别排他队 列中的任务不能与所述类别排他队列对应类型的任务同时执行。
     通过上述技术方案, 通过实现同步队列将具有约束关系的任务进行同步排队, 避 免了任务之间的竞争, 然后利用优先级调节队列中任务的执行滞后性, 同时通过等待队列 和设置任务数可同时执行任务的最大数目, 使负载能力可控, 具有良好的系统伸缩性。
     本发明还提供了一种任务处理装置, 包括 : 调度模块, 判断输入的任务是否具有同 步属性, 在所述任务具有同步属性时, 将所述任务提交至同步控制模块, 在所述任务不具有 同步属性时, 将所述任务提交至任务执行模块 ; 所述同步控制模块, 根据所述任务的同步属 性, 在当前执行任务中查找所述任务对应的排他任务, 并在所述当前执行任务中不存在所 述任务对应的排他任务时, 将所述任务通过所述调度模块提交至所述任务执行模块 ; 所述 任务执行模块, 执行所述任务。 通过该技术方案, 可以避免同时执行任务时由于相互竞争导 致对系统资源的争夺, 保证了执行任务的次序和效率, 合理利用计算机的系统资源。
     在上述技术方案中, 优选地, 还包括 : 同步队列模块, 提供排他队列, 所述同步控制 模块在当前执行任务中存在所述任务对应的排他任务时, 根据所述任务的同步属性, 通过 所述同步队列模块将所述任务分配至对应的排他队列, 在所述当前执行任务中不存在所述 任务对应的排他任务时, 通过所述同步队列模块从所述任务对应的排他队列里取出所述任 务, 由所述调度模块将所述任务提交至所述任务执行模块, 以待执行。
     在上述技术方案中, 优选地, 所述同步队列模块还供用户制定不同类型的排他队 列。通过该技术方案, 使得任务的处理更加灵活。
     通过上述技术方案, 通过实现同步队列将具有约束关系的任务进行同步排队, 避 免了任务之间的竞争, 然后利用优先级调节队列中任务的执行滞后性, 同时通过等待队列 和设置任务数可同时执行任务的最大数目, 使负载能力可控, 具有良好的系统伸缩性。
     附图说明 图 1 是根据本发明的一个实施例的任务处理方法的流程图 ;
     图 2 是根据本发明的一个实施例的任务处理装置的框图 ;
     图 3 是根据本发明的一个实施例的任务处理装置的功能模块示意图 ;
     图 4 是根据本发明的一个实施例的任务处理装置的任务执行模块以状态机方式 工作的运行示意图 ; 以及
     图 5 是根据本发明的一个实施例的任务处理方法的流程图。具体实施方式
     为了能够更清楚地理解本发明的上述目的、 特征和优点, 下面结合附图和具体实 施方式对本发明进行进一步的详细描述。
     在下面的描述中阐述了很多具体细节以便于充分理解本发明, 但是, 本发明还可 以采用其他不同于在此描述的其他方式来实施, 因此, 本发明并不限于下面公开的具体实 施例的限制。
     图 1 是根据本发明的一个实施例的任务处理方法的流程图。
     如图 1 所示, 根据本发明的实施例的任务处理方法包括 : 步骤 102, 接收输入的 任务 ; 步骤 104, 判断所述任务是否具有同步属性, 在所述任务具有同步属性时, 进入步骤 106, 在所述任务不具有同步属性时, 进入步骤 110 ; 所述步骤 106, 根据所述任务的同步属 性, 在当前执行任务中查找所述任务对应的排他任务 ; 步骤 108, 在当前执行任务中存在所 述任务对应的排他任务时, 不执行所述任务, 直至所述当前执行任务中不存在所述任务对 应的排他任务, 所述步骤 110, 执行所述任务。 通过这样的技术方案, 可以避免同时执行任务 时由于相互竞争导致对系统资源的争夺, 保证了执行任务的次序和效率, 合理利用计算机 的系统资源。 在上述技术方案中, 所述步骤 108 中, 在当前执行任务中存在所述任务对应的排 他任务时, 根据所述任务的同步属性, 将所述任务分配至对应的排他队列, 在所述当前执行 任务中不存在所述任务对应的排他任务时, 从所述任务对应的排他队列里取出所述任务, 以待执行。
     在上述技术方案中, 排他队列中的所有任务均具有优先级, 从所述排他队列中取 出任务时, 先取出优先级最高的任务。这样, 通过优先级调节, 保证了任务执行的次序。
     在上述技术方案中, 在所述步骤 110 中, 所述任务通过线程池提供的线程执行。
     在上述技术方案中, 在所述步骤 110 中, 所述当前执行任务占用所述线程池的所 有线程时, 使所述任务进入等待状态, 直至所述线程池中存在空余线程, 使用所述空余线程 执行所述任务。因此, 可以很好地控制系统的伸缩性。
     在上述技术方案中, 处于所述等待状态的所有任务均具有优先级, 在所述线程池 里仅出现一个空余线程时, 将所述一个空余线程用于执行优先级最高的任务。通过该技术 方案, 使得等待队列中的任务也具有优先级。
     在上述技术方案中, 所述步骤 108 中, 所述任务具有多个同步属性, 以及在当前执 行任务中存在对应任务的不同同步属性的多个排他任务, 根据所述不同同步属性的优先程 度, 将所述任务分配至优先程度最高的同步属性对应的排他队列, 排他队列包括 : 全局排他 队列, 所述全局排他队列中的任务只能单独执行 ; 类别排他队列, 所述类别排他队列中的任 务不能与所述类别排他队列对应类型的任务同时执行。
     通过上述技术方案, 通过实现同步队列将具有约束关系的任务进行同步排队, 避 免了任务之间的竞争, 然后利用优先级调节队列中任务的执行滞后性, 同时通过等待队列 和设置任务数可同时执行任务的最大数目, 使负载能力可控, 具有良好的系统伸缩性。
     图 2 是根据本发明的一个实施例的任务处理装置的框图。
     如图 2 所示, 根据本发明的实施例的任务处理装置 200 包括 : 调度模块 202, 判断 输入的任务是否具有同步属性, 在所述任务具有同步属性时, 将所述任务提交至同步控制 模块, 在所述任务不具有同步属性时, 将所述任务提交至任务执行模块 ; 所述同步控制模 块 204, 根据所述任务的同步属性, 在当前执行任务中查找所述任务对应的排他任务, 并在 所述当前执行任务中不存在所述任务对应的排他任务时, 将所述任务通过所述调度模块提 交至所述任务执行模块 ; 所述任务执行模块 206, 执行所述任务。通过这样的技术方案, 可 以避免同时执行任务时由于相互竞争导致对系统资源的争夺, 保证了执行任务的次序和效 率, 合理利用计算机的系统资源。
     在上述技术方案中, 还可以包括 : 同步队列模块, 提供排他队列, 所述同步控制模 块在当前执行任务中存在所述任务对应的排他任务时, 根据所述任务的同步属性, 通过所 述同步队列模块将所述任务分配至对应的排他队列, 在所述当前执行任务中不存在所述任 务对应的排他任务时, 通过所述同步队列模块从所述任务对应的排他队列里取出所述任 务, 由所述调度模块将所述任务提交至所述任务执行模块, 以待执行。
     在上述技术方案中, 所述同步队列模块还供用户制定不同类型的排他队列。 因此, 使得任务的处理更加灵活。 通过上述技术方案, 通过实现同步队列将具有约束关系的任务进行同步排队, 避 免了任务之间的竞争, 然后利用优先级调节队列中任务的执行滞后性, 同时通过等待队列 和设置任务数可同时执行任务的最大数目, 使负载能力可控, 具有良好的系统伸缩性。
     图 3 是根据本发明的一个实施例的任务处理装置的功能模块示意图。
     如图 3 所示, 调度控制模块 302( 相当于图 2 实施例中的调度模块 202) : 作为中央 控制模块, 通过协调同步控制模块 304 和任务执行模块 306 控制任务的同步和执行。
     同步控制模块 304 : 负责同步任务的同步控制 ( 出入队 ), 并根据同步状态提供可 执行任务。
     任务执行模块 306 : 以状态机的模式负责任务的具体执行。状态机如图 4 所示, 分 为三种状态 : 空闲 (Idle), 可运行 (Running), 已满载 (Overflow)。
     同步队列模块 308 : 同步策略的具体实现, 可提供多种同步策略, 如排他同步, 类 别同步等, 通过队列的方式实现各种同步行为。
     等待队列模块 312 : 为可执行的任务提供伸缩性支持。
     优先级控制模块 310 : 以优先队列的方式负责为同步队列和等待队列提供优先级 控制。
     其中, 图 4 是根据本发明的一个实施例的任务处理装置的任务执行模块以状态机 方式工作的运行示意图。Idle 状态即表明任务执行模块 306 无任何任务在执行, 当有任务 派发过来时即转化为 Running 状态, Running 状态即表明有任务在任务执行模块 306 运行, 但还有空余线程可用, 当正在运行的任务已达最大数目 Running 状态即转化为 Overflow 状态, 处于 Idle 或 Running 状态下, 任务执行模块 306 收到派发的任务后将立即执行, 处 于 Overflow 状态下, 将任务入队到等待队列模块 312( 这样就可以很好的控制系统的伸缩 性 ), 直到当前某个执行的任务完成后, 状态又将重新转化为 Running 状态, 然后从等待队 列中出队任务进行执行, 同样, 当任务全部完成, 状态又将转化为 Idle 状态, 循环往复执 行; 任务的执行是在操作系统线程池上, 因此任务的执行和整个调度过程是异步的, 不会阻
     塞调度线程, 同时用户可以通过任务执行模块 306 动态指定系统执行任务的最大数目。
     图 5 是根据本发明的一个实施例的任务处理方法的流程图。
     如图 5 所示, 在步骤 502, 输入需要处理的任务。
     在步骤 504, 以时间间隔的方式通过接口或查询数据源获得一批任务, 根据任务的 属性判断是否将任务进行同步控制, 是则进入步骤 506, 否则进入步骤 518。
     在步骤 506, 将任务进行同步控制。
     在步骤 508, 根据任务的属性判断是否为排他同步, 是则进入步骤 510, 否则进入 步骤 512。
     在步骤 510, 将任务排入全局排他队列。
     在步骤 512, 判断任务是否为类别同步, 是则进入步骤 514, 否则进入步骤 516。
     在步骤 514, 将任务排入类别同步队列。
     在步骤 516, 将任务进行其他同步处理。
     在步骤 518, 将任务派送并执行。
     在步骤 520, 判断任务是否处于可执行状态, 是则进入步骤 522, 否则进入步骤 524。 在步骤 522, 将任务排入等待队列。
     在步骤 524, 按照图 4 所示的运行流程, 执行该任务。
     在这里, 需要说明的是, 将入队任务进行同步控制时, 使用不同的同步策略的队列 来控制任务的同步等待。 同步队列包括 : 全局排他队列, 指的是该类任务在一台计算机上在 同一时间只能单独执行, 不允许其他任务同时执行, 进入条件为只要当前正在执行的任务 中有全局排他任务, 其他任务就必须进入该队列进行同步等待 ; 类别排他队列, 指的是按照 用户定义的某种分类, 只要属于该分类的任务在当前系统执行, 那么就必须进入该分类的 队列进行同步等待。 其他同步队列, 指的是由于本发明具有扩展性, 用户可以定义具有其他 同步策略的队列。
     任一个同步队列的实现都遵循如下规则 :
     1. 队列分为两种状态 : a) 就绪状态 b) 同步状态 ;
     2. 处于就绪状态下, 可以进行入队操作, 也可以进行出队操作, 如果是出队操作队 列状态转化为同步状态 ;
     3. 处于同步状态下, 可以入队, 但不能出队, 如果收到同步控制信号, 队列状态转 换为就绪状态 ;
     通过如上规则, 从抽象的角度定义了同步的语义, 而把每个任务具体需要与哪个 或哪类任务同步留给了各个队列去具体实现。通过遍历处于就绪状态同步队列, 对其进行 出队操作, 得到的任务排队即为可执行任务列表。
     需要注意的是, 在混合同步模式下, 即该任务可能需要通过多个同步队列进行同 步控制时, 可能会丧失一部分时序上的优先, 导致任务执行滞后。如某任务 A 先进入全局排 他队列, 一分钟后某任务 B 紧接着直接进入类别同步队列, 假设任务 A 和 B 在任务本身的优 先级别上是一致的, 那么现在任务 A 在时序上要提前于任务 B, 按照时序优先的原则, 任务 A 应该优先于任务 B, 然后全局排他队列接到同步通知释放任务 A, 任务 A 接着进入类别同步 队列 ( 晚于任务 B 进入该队列的时间 ), 这时为了保障任务 A 的执行顺序领先于任务 B, 就
     将通过优先级控制提高任务 A 的优先级别。同样的, 等待队列中的任务在经过了同步控制 之后也丧失了时序上的优先, 同样为了解决此问题, 等待队列也需要调节优先级。
     另外, 当一个任务执行完之后, 该任务所在的线程将回调并通知该任务的结束同 步, 接到通知后, 按该任务的属性找到该任务对应的同步队列, 然后通知该队列结束同步, 导致同步队列状态发生改变, 接着再检索处于就绪状态的队列返回可执行任务列表, 再将 这些任务进行任务执行, 重复图 4 所示的执行方法。
     通过上述技术方案, 可以实现一种任务处理方法和装置, 其具有下列优点 :
     1. 将有约束关系的任务进行排队, 使其按顺序执行, 避免了同时执行时由于相互 竞争导致对系统资源的争夺, 既达到了同步的目的, 同时又提高了系统效率。
     2. 可扩展的可混合的多阶段同步队列实现方法, 可以支持多种同步队列并且混合 使用, 同时通过优先级调节保证了任务执行的次序问题。
     3. 利用设置最大任务数和等待队列, 通过排队的方式来控制系统的伸缩性, 使负 载能力可控, 能更合理的利用计算机的系统资源。
     4. 提出基于状态机模式的任务执行方法, 相对于传统的通过一个轮询线程间隔的 从队列获取任务, 由于其不需要轮询线程, 其可靠性和效率都大幅提高。
     以上所述仅为本发明的优选实施例而已, 并不用于限制本发明, 对于本领域的技 术人员来说, 本发明可以有各种更改和变化。 凡在本发明的精神和原则之内, 所作的任何修 改、 等同替换、 改进等, 均应包含在本发明的保护范围之内。

任务处理方法和装置.pdf_第1页
第1页 / 共11页
任务处理方法和装置.pdf_第2页
第2页 / 共11页
任务处理方法和装置.pdf_第3页
第3页 / 共11页
点击查看更多>>
资源描述

《任务处理方法和装置.pdf》由会员分享,可在线阅读,更多相关《任务处理方法和装置.pdf(11页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN101963922A43申请公布日20110202CN101963922ACN101963922A21申请号201010299851222申请日20100929G06F9/46200601G06F9/5220060171申请人用友软件股份有限公司地址100094北京市海淀区北清路68号用友软件园72发明人王昊沙74专利代理机构北京友联知识产权代理事务所普通合伙11343代理人尚志峰汪海屏54发明名称任务处理方法和装置57摘要本发明提供了一种任务处理方法,包括步骤102,接收输入的任务;步骤104,判断任务是否具有同步属性,在任务具有同步属性时,进入步骤106,在任务不具有同步。

2、属性时,进入步骤110;步骤106,根据任务的同步属性,在当前执行任务中查找任务对应的排他任务;步骤108,在当前执行任务中存在任务对应的排他任务时,不执行任务,直至当前执行任务中不存在任务对应的排他任务,步骤110,执行任务。本发明还提供了一种任务处理装置。根据本发明的技术方案,将具有约束关系的任务进行同步排队,避免了任务之间的竞争,然后利用优先级调节队列中任务的执行滞后性,同时通过等待队列和设置任务数可同时执行任务的最大数目,使负载能力可控,具有良好的系统伸缩性。51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书6页附图2页CN101963923A1/2页2。

3、1一种任务处理方法,其特征在于,包括步骤102,接收输入的任务;步骤104,判断所述任务是否具有同步属性,在所述任务具有同步属性时,进入步骤106,在所述任务不具有同步属性时,进入步骤110;所述步骤106,根据所述任务的同步属性,在当前执行任务中查找所述任务对应的排他任务;步骤108,在当前执行任务中存在所述任务对应的排他任务时,不执行所述任务,直至所述当前执行任务中不存在所述任务对应的排他任务,所述步骤110,执行所述任务。2根据权利要求1所述的任务处理方法,其特征在于,所述步骤108中,在当前执行任务中存在所述任务对应的排他任务时,根据所述任务的同步属性,将所述任务分配至对应的排他队列,。

4、在所述当前执行任务中不存在所述任务对应的排他任务时,从所述任务对应的排他队列里取出所述任务,以待执行。3根据权利要求2所述的任务处理方法,其特征在于,排他队列中的所有任务均具有优先级,从所述排他队列中取出任务时,先取出优先级最高的任务。4根据权利要求2所述的任务处理方法,其特征在于,在所述步骤110中,所述任务通过线程池提供的线程执行。5根据权利要求4所述的任务处理方法,其特征在于,在所述步骤110中,所述当前执行任务占用所述线程池的所有线程时,使所述任务进入等待状态,直至所述线程池中存在空余线程,使用所述空余线程执行所述任务。6根据权利要求5所述的任务处理方法,其特征在于,处于所述等待状态的。

5、所有任务均具有优先级,在所述线程池里仅出现一个空余线程时,将所述一个空余线程用于执行优先级最高的任务。7根据权利要求2至6中任一项所述的任务处理方法,其特征在于,所述步骤108中,所述任务具有多个同步属性,以及在当前执行任务中存在对应任务的不同同步属性的多个排他任务,根据所述不同同步属性的优先程度,将所述任务分配至优先程度最高的同步属性对应的排他队列,排他队列包括全局排他队列,所述全局排他队列中的任务只能单独执行;类别排他队列,所述类别排他队列中的任务不能与所述类别排他队列对应类型的任务同时执行。8一种任务处理装置,其特征在于,包括调度模块,判断输入的任务是否具有同步属性,在所述任务具有同步属。

6、性时,将所述任务提交至同步控制模块,在所述任务不具有同步属性时,将所述任务提交至任务执行模块;所述同步控制模块,根据所述任务的同步属性,在当前执行任务中查找所述任务对应的排他任务,并在所述当前执行任务中不存在所述任务对应的排他任务时,将所述任务通过所述调度模块提交至所述任务执行模块;所述任务执行模块,执行所述任务。权利要求书CN101963922ACN101963923A2/2页39根据权利要求8所述的任务处理装置,其特征在于,还包括同步队列模块,提供排他队列,所述同步控制模块在当前执行任务中存在所述任务对应的排他任务时,根据所述任务的同步属性,通过所述同步队列模块将所述任务分配至对应的排他队。

7、列,在所述当前执行任务中不存在所述任务对应的排他任务时,通过所述同步队列模块从所述任务对应的排他队列里取出所述任务,由所述调度模块将所述任务提交至所述任务执行模块,以待执行。10根据权利要求9所述的任务处理装置,其特征在于,所述同步队列模块还供用户制定不同类型的排他队列。权利要求书CN101963922ACN101963923A1/6页4任务处理方法和装置技术领域0001本发明涉及任务处理技术,尤其涉及任务处理方法和装置。背景技术0002在企业管理软件中,存在大量的异步任务,比如发送各种通知消息,短信,电子邮件等,执行某些自动动作自动调用服务等。随着用户压力的增加,在短时间内会产生大量的这些任。

8、务。已有的解决方法一般分为两种一种是将这些任务排入一个先入先出FIFO队列,然后一个个按顺序执行;另外一种则是通过一个线程池,多线程的将任务并行执行。前者的优点是不会由于任务过多而占用大量的系统资源,缺点是浪费了计算机并行处理能力,效率低下。后者的优点是尽可能的最大化利用了系统的并行计算能力,但缺点也很明显,一方面由于同时执行的任务可能存在约束或竞争关系,导致需要线程同步,就带来了额外的系统开销线程切换,锁竞争等,在任务之间约束和竞争关系比较多的情况下,反而会造成系统效率低下,另一方面由于大部分线程池无法提供很好的伸缩性负载可控,造成大负载情况下对系统资源的过度占用,极大的影响了用户体验。00。

9、03因此,需要一种任务处理方式,能够最大限度地利用计算机的并行能力,而又避免由于任务之间的约束带来的线程同步,耗费系统资源的问题。发明内容0004鉴于以上,本发明的技术方案所要解决的技术问题在于,提供一种任务处理方法和装置,能够最大限度地利用计算机的并行能力,而又避免由于任务之间的约束带来的线程同步,耗费系统资源的问题。0005本发明提供了一种任务处理方法,包括步骤102,接收输入的任务;步骤104,判断所述任务是否具有同步属性,在所述任务具有同步属性时,进入步骤106,在所述任务不具有同步属性时,进入步骤110;所述步骤106,根据所述任务的同步属性,在当前执行任务中查找所述任务对应的排他任。

10、务;步骤108,在当前执行任务中存在所述任务对应的排他任务时,不执行所述任务,直至所述当前执行任务中不存在所述任务对应的排他任务,所述步骤110,执行所述任务。通过该技术方案,可以避免同时执行任务时由于相互竞争导致对系统资源的争夺,保证了执行任务的次序和效率,合理利用计算机的系统资源。0006在上述技术方案中,优选地,所述步骤108中,在当前执行任务中存在所述任务对应的排他任务时,根据所述任务的同步属性,将所述任务分配至对应的排他队列,在所述当前执行任务中不存在所述任务对应的排他任务时,从所述任务对应的排他队列里取出所述任务,以待执行。0007在上述技术方案中,优选地,排他队列中的所有任务均具。

11、有优先级,从所述排他队列中取出任务时,先取出优先级最高的任务。通过该技术方案,通过优先级调节,保证了任务执行的次序。0008在上述技术方案中,优选地,在所述步骤110中,所述任务通过线程池提供的线程说明书CN101963922ACN101963923A2/6页5执行。0009在上述技术方案中,优选地,在所述步骤110中,所述当前执行任务占用所述线程池的所有线程时,使所述任务进入等待状态,直至所述线程池中存在空余线程,使用所述空余线程执行所述任务。通过该技术方案,可以很好地控制系统的伸缩性。0010在上述技术方案中,优选地,处于所述等待状态的所有任务均具有优先级,在所述线程池里仅出现一个空余线程。

12、时,将所述一个空余线程用于执行优先级最高的任务。通过该技术方案,使得等待队列中的任务也具有优先级。0011在上述技术方案中,优选地,所述步骤108中,所述任务具有多个同步属性,以及在当前执行任务中存在对应任务的不同同步属性的多个排他任务,根据所述不同同步属性的优先程度,将所述任务分配至优先程度最高的同步属性对应的排他队列,排他队列包括全局排他队列,所述全局排他队列中的任务只能单独执行;类别排他队列,所述类别排他队列中的任务不能与所述类别排他队列对应类型的任务同时执行。0012通过上述技术方案,通过实现同步队列将具有约束关系的任务进行同步排队,避免了任务之间的竞争,然后利用优先级调节队列中任务的。

13、执行滞后性,同时通过等待队列和设置任务数可同时执行任务的最大数目,使负载能力可控,具有良好的系统伸缩性。0013本发明还提供了一种任务处理装置,包括调度模块,判断输入的任务是否具有同步属性,在所述任务具有同步属性时,将所述任务提交至同步控制模块,在所述任务不具有同步属性时,将所述任务提交至任务执行模块;所述同步控制模块,根据所述任务的同步属性,在当前执行任务中查找所述任务对应的排他任务,并在所述当前执行任务中不存在所述任务对应的排他任务时,将所述任务通过所述调度模块提交至所述任务执行模块;所述任务执行模块,执行所述任务。通过该技术方案,可以避免同时执行任务时由于相互竞争导致对系统资源的争夺,保。

14、证了执行任务的次序和效率,合理利用计算机的系统资源。0014在上述技术方案中,优选地,还包括同步队列模块,提供排他队列,所述同步控制模块在当前执行任务中存在所述任务对应的排他任务时,根据所述任务的同步属性,通过所述同步队列模块将所述任务分配至对应的排他队列,在所述当前执行任务中不存在所述任务对应的排他任务时,通过所述同步队列模块从所述任务对应的排他队列里取出所述任务,由所述调度模块将所述任务提交至所述任务执行模块,以待执行。0015在上述技术方案中,优选地,所述同步队列模块还供用户制定不同类型的排他队列。通过该技术方案,使得任务的处理更加灵活。0016通过上述技术方案,通过实现同步队列将具有约。

15、束关系的任务进行同步排队,避免了任务之间的竞争,然后利用优先级调节队列中任务的执行滞后性,同时通过等待队列和设置任务数可同时执行任务的最大数目,使负载能力可控,具有良好的系统伸缩性。附图说明0017图1是根据本发明的一个实施例的任务处理方法的流程图;0018图2是根据本发明的一个实施例的任务处理装置的框图;0019图3是根据本发明的一个实施例的任务处理装置的功能模块示意图;0020图4是根据本发明的一个实施例的任务处理装置的任务执行模块以状态机方式工作的运行示意图;以及说明书CN101963922ACN101963923A3/6页60021图5是根据本发明的一个实施例的任务处理方法的流程图。具。

16、体实施方式0022为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。0023在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明并不限于下面公开的具体实施例的限制。0024图1是根据本发明的一个实施例的任务处理方法的流程图。0025如图1所示,根据本发明的实施例的任务处理方法包括步骤102,接收输入的任务;步骤104,判断所述任务是否具有同步属性,在所述任务具有同步属性时,进入步骤106,在所述任务不具有同步属性时,进入步骤110;所述步骤106,根据所述任务的同步属。

17、性,在当前执行任务中查找所述任务对应的排他任务;步骤108,在当前执行任务中存在所述任务对应的排他任务时,不执行所述任务,直至所述当前执行任务中不存在所述任务对应的排他任务,所述步骤110,执行所述任务。通过这样的技术方案,可以避免同时执行任务时由于相互竞争导致对系统资源的争夺,保证了执行任务的次序和效率,合理利用计算机的系统资源。0026在上述技术方案中,所述步骤108中,在当前执行任务中存在所述任务对应的排他任务时,根据所述任务的同步属性,将所述任务分配至对应的排他队列,在所述当前执行任务中不存在所述任务对应的排他任务时,从所述任务对应的排他队列里取出所述任务,以待执行。0027在上述技术。

18、方案中,排他队列中的所有任务均具有优先级,从所述排他队列中取出任务时,先取出优先级最高的任务。这样,通过优先级调节,保证了任务执行的次序。0028在上述技术方案中,在所述步骤110中,所述任务通过线程池提供的线程执行。0029在上述技术方案中,在所述步骤110中,所述当前执行任务占用所述线程池的所有线程时,使所述任务进入等待状态,直至所述线程池中存在空余线程,使用所述空余线程执行所述任务。因此,可以很好地控制系统的伸缩性。0030在上述技术方案中,处于所述等待状态的所有任务均具有优先级,在所述线程池里仅出现一个空余线程时,将所述一个空余线程用于执行优先级最高的任务。通过该技术方案,使得等待队列。

19、中的任务也具有优先级。0031在上述技术方案中,所述步骤108中,所述任务具有多个同步属性,以及在当前执行任务中存在对应任务的不同同步属性的多个排他任务,根据所述不同同步属性的优先程度,将所述任务分配至优先程度最高的同步属性对应的排他队列,排他队列包括全局排他队列,所述全局排他队列中的任务只能单独执行;类别排他队列,所述类别排他队列中的任务不能与所述类别排他队列对应类型的任务同时执行。0032通过上述技术方案,通过实现同步队列将具有约束关系的任务进行同步排队,避免了任务之间的竞争,然后利用优先级调节队列中任务的执行滞后性,同时通过等待队列和设置任务数可同时执行任务的最大数目,使负载能力可控,具。

20、有良好的系统伸缩性。0033图2是根据本发明的一个实施例的任务处理装置的框图。说明书CN101963922ACN101963923A4/6页70034如图2所示,根据本发明的实施例的任务处理装置200包括调度模块202,判断输入的任务是否具有同步属性,在所述任务具有同步属性时,将所述任务提交至同步控制模块,在所述任务不具有同步属性时,将所述任务提交至任务执行模块;所述同步控制模块204,根据所述任务的同步属性,在当前执行任务中查找所述任务对应的排他任务,并在所述当前执行任务中不存在所述任务对应的排他任务时,将所述任务通过所述调度模块提交至所述任务执行模块;所述任务执行模块206,执行所述任务。。

21、通过这样的技术方案,可以避免同时执行任务时由于相互竞争导致对系统资源的争夺,保证了执行任务的次序和效率,合理利用计算机的系统资源。0035在上述技术方案中,还可以包括同步队列模块,提供排他队列,所述同步控制模块在当前执行任务中存在所述任务对应的排他任务时,根据所述任务的同步属性,通过所述同步队列模块将所述任务分配至对应的排他队列,在所述当前执行任务中不存在所述任务对应的排他任务时,通过所述同步队列模块从所述任务对应的排他队列里取出所述任务,由所述调度模块将所述任务提交至所述任务执行模块,以待执行。0036在上述技术方案中,所述同步队列模块还供用户制定不同类型的排他队列。因此,使得任务的处理更加。

22、灵活。0037通过上述技术方案,通过实现同步队列将具有约束关系的任务进行同步排队,避免了任务之间的竞争,然后利用优先级调节队列中任务的执行滞后性,同时通过等待队列和设置任务数可同时执行任务的最大数目,使负载能力可控,具有良好的系统伸缩性。0038图3是根据本发明的一个实施例的任务处理装置的功能模块示意图。0039如图3所示,调度控制模块302相当于图2实施例中的调度模块202作为中央控制模块,通过协调同步控制模块304和任务执行模块306控制任务的同步和执行。0040同步控制模块304负责同步任务的同步控制出入队,并根据同步状态提供可执行任务。0041任务执行模块306以状态机的模式负责任务的。

23、具体执行。状态机如图4所示,分为三种状态空闲IDLE,可运行RUNNING,已满载OVERFLOW。0042同步队列模块308同步策略的具体实现,可提供多种同步策略,如排他同步,类别同步等,通过队列的方式实现各种同步行为。0043等待队列模块312为可执行的任务提供伸缩性支持。0044优先级控制模块310以优先队列的方式负责为同步队列和等待队列提供优先级控制。0045其中,图4是根据本发明的一个实施例的任务处理装置的任务执行模块以状态机方式工作的运行示意图。IDLE状态即表明任务执行模块306无任何任务在执行,当有任务派发过来时即转化为RUNNING状态,RUNNING状态即表明有任务在任务执。

24、行模块306运行,但还有空余线程可用,当正在运行的任务已达最大数目RUNNING状态即转化为OVERFLOW状态,处于IDLE或RUNNING状态下,任务执行模块306收到派发的任务后将立即执行,处于OVERFLOW状态下,将任务入队到等待队列模块312这样就可以很好的控制系统的伸缩性,直到当前某个执行的任务完成后,状态又将重新转化为RUNNING状态,然后从等待队列中出队任务进行执行,同样,当任务全部完成,状态又将转化为IDLE状态,循环往复执行;任务的执行是在操作系统线程池上,因此任务的执行和整个调度过程是异步的,不会阻说明书CN101963922ACN101963923A5/6页8塞调度。

25、线程,同时用户可以通过任务执行模块306动态指定系统执行任务的最大数目。0046图5是根据本发明的一个实施例的任务处理方法的流程图。0047如图5所示,在步骤502,输入需要处理的任务。0048在步骤504,以时间间隔的方式通过接口或查询数据源获得一批任务,根据任务的属性判断是否将任务进行同步控制,是则进入步骤506,否则进入步骤518。0049在步骤506,将任务进行同步控制。0050在步骤508,根据任务的属性判断是否为排他同步,是则进入步骤510,否则进入步骤512。0051在步骤510,将任务排入全局排他队列。0052在步骤512,判断任务是否为类别同步,是则进入步骤514,否则进入步。

26、骤516。0053在步骤514,将任务排入类别同步队列。0054在步骤516,将任务进行其他同步处理。0055在步骤518,将任务派送并执行。0056在步骤520,判断任务是否处于可执行状态,是则进入步骤522,否则进入步骤524。0057在步骤522,将任务排入等待队列。0058在步骤524,按照图4所示的运行流程,执行该任务。0059在这里,需要说明的是,将入队任务进行同步控制时,使用不同的同步策略的队列来控制任务的同步等待。同步队列包括全局排他队列,指的是该类任务在一台计算机上在同一时间只能单独执行,不允许其他任务同时执行,进入条件为只要当前正在执行的任务中有全局排他任务,其他任务就必须。

27、进入该队列进行同步等待;类别排他队列,指的是按照用户定义的某种分类,只要属于该分类的任务在当前系统执行,那么就必须进入该分类的队列进行同步等待。其他同步队列,指的是由于本发明具有扩展性,用户可以定义具有其他同步策略的队列。0060任一个同步队列的实现都遵循如下规则00611队列分为两种状态A就绪状态B同步状态;00622处于就绪状态下,可以进行入队操作,也可以进行出队操作,如果是出队操作队列状态转化为同步状态;00633处于同步状态下,可以入队,但不能出队,如果收到同步控制信号,队列状态转换为就绪状态;0064通过如上规则,从抽象的角度定义了同步的语义,而把每个任务具体需要与哪个或哪类任务同步。

28、留给了各个队列去具体实现。通过遍历处于就绪状态同步队列,对其进行出队操作,得到的任务排队即为可执行任务列表。0065需要注意的是,在混合同步模式下,即该任务可能需要通过多个同步队列进行同步控制时,可能会丧失一部分时序上的优先,导致任务执行滞后。如某任务A先进入全局排他队列,一分钟后某任务B紧接着直接进入类别同步队列,假设任务A和B在任务本身的优先级别上是一致的,那么现在任务A在时序上要提前于任务B,按照时序优先的原则,任务A应该优先于任务B,然后全局排他队列接到同步通知释放任务A,任务A接着进入类别同步队列晚于任务B进入该队列的时间,这时为了保障任务A的执行顺序领先于任务B,就说明书CN101。

29、963922ACN101963923A6/6页9将通过优先级控制提高任务A的优先级别。同样的,等待队列中的任务在经过了同步控制之后也丧失了时序上的优先,同样为了解决此问题,等待队列也需要调节优先级。0066另外,当一个任务执行完之后,该任务所在的线程将回调并通知该任务的结束同步,接到通知后,按该任务的属性找到该任务对应的同步队列,然后通知该队列结束同步,导致同步队列状态发生改变,接着再检索处于就绪状态的队列返回可执行任务列表,再将这些任务进行任务执行,重复图4所示的执行方法。0067通过上述技术方案,可以实现一种任务处理方法和装置,其具有下列优点00681将有约束关系的任务进行排队,使其按顺序。

30、执行,避免了同时执行时由于相互竞争导致对系统资源的争夺,既达到了同步的目的,同时又提高了系统效率。00692可扩展的可混合的多阶段同步队列实现方法,可以支持多种同步队列并且混合使用,同时通过优先级调节保证了任务执行的次序问题。00703利用设置最大任务数和等待队列,通过排队的方式来控制系统的伸缩性,使负载能力可控,能更合理的利用计算机的系统资源。00714提出基于状态机模式的任务执行方法,相对于传统的通过一个轮询线程间隔的从队列获取任务,由于其不需要轮询线程,其可靠性和效率都大幅提高。0072以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。说明书CN101963922ACN101963923A1/2页10图1图2图3说明书附图CN101963922ACN101963923A2/2页11图4图5说明书附图CN101963922A。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1