[发明专利]多任务并发处理方法及装置在审
申请号: | 201910168719.9 | 申请日: | 2019-03-06 |
公开(公告)号: | CN111666146A | 公开(公告)日: | 2020-09-15 |
发明(设计)人: | 严翔;张峰 | 申请(专利权)人: | 北京搜狗科技发展有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50 |
代理公司: | 北京华圣典睿知识产权代理有限公司 11510 | 代理人: | 赵景平 |
地址: | 100084 北京市海淀区中关*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 任务 并发 处理 方法 装置 | ||
本发明公开了一种多任务并发处理方法及装置,该方法包括:确定任务树中的节点的服务状态及父节点;根据节点的所述服务状态及父节点确定所述节点是否为待处理节点;为待处理节点分配线程,以处理所述待处理节点对应的子任务。利用本发明方案,在提高任务处理效率的同时,可以有效避免线程资源的浪费。
技术领域
本发明涉及任务管理领域,具体涉及一种多任务并发处理方法及装置。
背景技术
线程是程序中一个单一的顺序控制流程,在单个程序中同时运行多个线程完成不同的工作,称为多线程。多线程技术通过对多任务的并发执行可以提高整体执行效率。在任务之间存在依赖的情况下,比如任务a需要在任务b完成后才能执行,需要对线程之间的依赖进行管理,目前业内的基本管理方案为CountDownLatch机制(java技术的多线程协同机制),CountDownLatch是java的一个同步工具类,它允许一个或多个线程一直等待,直到其他线程执行完后再执行。
如图1中所示,存在依赖关系的多个子任务如下:子任务b需要等子任务a执行完毕后才能执行,子任务c需要等子任务a、b执行完毕后才能执行,子任务e需要等子任务c、d执行完毕后才能执行。采用多线程技术实现上述任务时,利用CountDownLatch机制来协调这些线程之间的同步。在时刻t1,多线程启动所有任务;在时刻t2,线程2、线程3、线程5阻塞,等待相应子任务完成。由于总线程资源有限,线程阻塞使得相应线程占用后不能再被分配,从而造成资源浪费。
发明内容
本发明实施例提供一种多任务并发处理方法及装置,避免对线程资源造成浪费。
为此,本发明提供如下技术方案:
一种多任务并发处理方法,所述方法包括:
确定任务树中的节点的服务状态及父节点;
根据节点的所述服务状态及父节点确定所述节点是否为待处理节点;
为待处理节点分配线程,以处理所述待处理节点对应的子任务。
可选地,所述确定任务树中的节点的服务状态包括:
将任务树中节点的初始服务状态设置为等待状态。
可选地,所述确定任务树中的节点的父节点包括:
根据任务树中节点间的依赖关系确定节点对应的父节点。
可选地,所述根据节点的所述服务状态及父节点确定所述节点是否为待处理节点包括:
判断节点的父节点是否为空并且服务状态是否为等待状态;
如果是,则确定所述节点为待处理节点。
可选地,所述为所述待处理节点分配线程,以处理所述待处理节点对应的子任务包括:
如果所述待处理节点有多个,则启用多线程以并行处理所述待处理节点对应的子任务。
可选地,所述方法还包括:
为所述待处理节点分配线程后,将所述待处理节点的服务状态设置为执行状态;
在所述子任务处理完成后,将所述子任务对应的节点的服务状态设置为完成状态。
可选地,在所述子任务处理完成后,所述方法还包括:
将所述任务树中父节点中包含所述处理完成的子任务对应的节点移除。
一种多任务并发处理装置,所述装置包括:
初始化模块,用于确定任务树中的节点的服务状态及父节点;
待处理节点确定模块,用于根据节点的所述服务状态及父节点确定所述节点是否为待处理节点;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京搜狗科技发展有限公司,未经北京搜狗科技发展有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910168719.9/2.html,转载请声明来源钻瓜专利网。