[发明专利]任务调度方法、系统及电子设备在审
申请号: | 202111002574.9 | 申请日: | 2021-08-30 |
公开(公告)号: | CN113703941A | 公开(公告)日: | 2021-11-26 |
发明(设计)人: | 何灿 | 申请(专利权)人: | 竞技世界(北京)网络技术有限公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 薛娇 |
地址: | 101400 北京市怀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 任务 调度 方法 系统 电子设备 | ||
本申请实施例公开了一种任务调度方法、系统及电子设备,通过逻辑线程将等待任务序列以及未连接任务序列发送给连接线程;未连接任务序列中的任务为逻辑线程建立的不存在依赖任务的任务;通过连接线程在未连接任务序列中查询目标任务,目标任务为未连接任务序列中,后置任务包括等待任务序列中的至少一个未完成的任务的任务;若查询到目标任务,通过连接线程将目标任务发送给所述逻辑线程;通过逻辑线程将目标任务插入逻辑线程任务无锁队列,以便连接线程和工作线程偷取目标任务并执行。本申请通过逻辑线程与连接线程的交互,实现了优先处理等待任务序列的目的,从而缩短等待任务序列等待执行的时间,提高了等待任务序列的执行效率。
技术领域
本申请涉及计算机应用技术领域,更具体地说,涉及一种任务调度方法、系统及电子设备。
背景技术
在支持任务依赖的多线程并发任务调度系统中,如果一个任务A的执行依赖于另一个任务B的执行,则任务A需要等任务B完成后才能被执行。在一些场景下,有执行完成特定任务序列的需求,基于此,如果特定任务序列中的任务的执行依赖于至少一个其它任务(该其它任务不属于特定任务序列)的执行,则特定任务序列中的任务需要等上述至少一个其它任务全部都执行完才能被执行,而其它任务什么时候执行是不确定的,导致特定任务序列的执行效率较低。
发明内容
本申请的目的是提供一种任务调度方法、系统及电子设备,包括如下技术方案:
一种任务调度方法,包括:
通过逻辑线程将等待任务序列以及未连接任务序列发送给连接线程;所述未连接任务序列中的任务为所述逻辑线程建立的不存在依赖任务的任务;
通过所述连接线程在所述未连接任务序列中查询目标任务,所述目标任务为所述未连接任务序列中,后置任务包括所述等待任务序列中的至少一个未完成的任务的任务;
若查询到目标任务,通过所述连接线程将所述目标任务发送给所述逻辑线程;
通过所述逻辑线程将所述目标任务插入逻辑线程任务无锁队列,以便所述连接线程和工作线程偷取所述目标任务并执行。
上述方法,优选的,所述连接线程在所述未连接任务序列中查询目标任务包括:
所述连接线程查询所述等待任务序列中所有未完成的任务;
对于所述未连接任务序列中的每一个任务T,所述连接线程遍历以所述任务T为根节点的任务树,以查询所述任务树中是否存在至少一个所述未完成的任务;所述任务树中相互连接的两个节点为具有依赖关系的两个任务;
若所述任务树中存在至少一个所述未完成任务,将所述任务T确定位目标任务。
上述方法,优选的,还包括:
通过所述工作线程偷取目标无锁队列中的任务并执行;所述目标无锁队列至少包括所述逻辑线程任务无锁队列,以及存储有所述连接线程插入的依赖任务均已执行完成的任务的连接线程任务无锁队列;
通过所述工作线程将执行完成的任务插入所述工作线程对应的减少后置任务无锁队列中;
通过所述连接线程获取增加后置任务无锁队列中的封装包并执行,以建立所述封装包中的至少两个任务的依赖关系,并确定是否增加所述至少两个任务中的后置任务的引用计数,所述引用计数用于确定所述后置任务的所有依赖任务的数量;所述封装包由所述逻辑线程建立所述后置任务时生成;
通过所述连接线程根据各工作线程对应的减少后置任务无锁队列确定需要减少引用计数的后置任务并减少该后置任务的引用计数,在任一后置任务的引用计数为目标值时,将该后置任务插入所述连接线程任务无锁队列中。
上述方法,优选的,所述未连接任务序列存储于逻辑线程任务缓存队列中,所述方法还包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于竞技世界(北京)网络技术有限公司,未经竞技世界(北京)网络技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111002574.9/2.html,转载请声明来源钻瓜专利网。