任务执行方法、装置、系统及存储介质制造方法及图纸

技术编号:38810170 阅读:12 留言:0更新日期:2023-09-15 19:49
本申请实施例公开了一种任务执行方法、装置、系统及存储介质,属于计算机技术领域。该方法由任务执行系统执行,该任务执行系统运行有多个线程,每个线程具有对应的局部任务队列。该方法包括:通过第一线程,从除了第一线程之外的其他线程的局部任务队列中查找目标任务,目标任务是指满足执行条件但还未执行的任务;在从其他线程的局部任务队列中查找到目标任务的情况下,通过第一线程,抢占并执行查找到的目标任务。由于任一线程能够抢占并执行其他线程的局部任务队列中的任务,从而及时执行其他线程没有来得及执行的任务,实现了对任务的自动调度,有利于提高任务的吞吐量,进而提高了任务的执行效率。了任务的执行效率。了任务的执行效率。

【技术实现步骤摘要】
任务执行方法、装置、系统及存储介质


[0001]本申请实施例涉及计算机
,特别涉及一种任务执行方法、装置、系统及存储介质。

技术介绍

[0002]随着计算机技术的飞速发展,目前在执行任务时,通常可以通过多个线程执行多个任务。相关技术中,采用人工配置的方式将多个任务分配给多个线程,由多个线程分别执行各自分配到的任务,当某个线程将分配到的任务执行完成后,重新为该线程分配新的任务,由于该方法依赖于人工配置,导致任务的执行效率较低。

技术实现思路

[0003]本申请实施例提供了一种任务执行方法、装置、系统及存储介质,能够提高任务的执行效率。所述技术方案如下:
[0004]一方面,提供了一种任务执行方法,由任务执行系统执行,所述任务执行系统运行有多个线程,每个所述线程具有对应的局部任务队列;所述方法包括:
[0005]通过第一线程,从除了所述第一线程之外的其他线程的局部任务队列中查找目标任务,所述目标任务是指满足执行条件但还未执行的任务;
[0006]在从其他线程的局部任务队列中查找到所述目标任务的情况下,通过所述第一线程,抢占并执行查找到的所述目标任务;
[0007]其中,所述第一线程为所述多个线程中的任一线程。
[0008]可选地,所述通过所述第一线程,从所述多个线程的局部任务队列中查找所述目标任务之后,所述方法还包括:
[0009]在从所述多个线程的局部任务队列中未查找到所述目标任务的情况下,将所述第一线程从所述第一状态切换为所述挂起状态。
[0010]可选地,每个所述任务具有依赖数量,所述任务的依赖数量是指所述任务所依赖的、且未执行的任务的数量;
[0011]所述通过所述第一线程,将未执行且所依赖的任务已执行完成的任务添加至所述第一线程的局部任务队列中,包括:
[0012]通过所述第一线程,将所述依赖数量等于0的任务添加至所述第一线程的局部任务队列中。
[0013]可选地,所述目标任务通过调用所述语言封装接口对所述原始任务中的函数和参数添加引用得到,通过所述第一线程,执行查找到的所述目标任务,包括:
[0014]通过所述第一线程,根据所述引用确定所述函数和所述参数,调用所述函数对所述参数进行处理。
[0015]另一方面,提供了一种任务执行装置,配置于任务执行系统,所述任务执行系统运行有多个线程,每个所述线程具有对应的局部任务队列;所述装置包括:
[0016]查找模块,用于通过第一线程,从除了所述第一线程之外的其他线程的局部任务队列中查找目标任务,所述目标任务是指满足执行条件但还未执行的任务;
[0017]执行模块,用于在从其他线程的局部任务队列中查找到所述目标任务的情况下,通过所述第一线程,抢占并执行查找到的所述目标任务;
[0018]其中,所述第一线程为所述多个线程中的任一线程。
[0019]可选地,所述查找模块,用于:
[0020]通过所述第一线程,从所述第一线程的局部任务队列中查找所述目标任务;
[0021]在从所述第一线程的局部任务队列中未查找到所述目标任务的情况下,通过所述第一线程,从其他线程的局部任务队列中查找所述目标任务。
[0022]可选地,所述执行条件包括所依赖的任务已执行完成或者不依赖于其他任务,所述局部任务队列用于存储未执行且所依赖的任务已执行完成的任务,全局任务队列用于存储未执行且不依赖于其他任务的任务;
[0023]所述查找模块,还用于在从其他线程的局部任务队列中未查找到所述目标任务的情况下,通过所述第一线程,从所述全局任务队列中查找所述目标任务;
[0024]所述执行模块,还用于在从所述全局任务队列中查找到所述目标任务的情况下,通过所述第一线程,抢占并执行查找到的所述目标任务。
[0025]可选地,所述查找模块,用于在从其他线程的局部任务队列中查找所述目标任务的次数达到目标阈值,且仍未查找到所述目标任务的情况下,通过所述第一线程,从所述全局任务队列中查找所述目标任务。
[0026]可选地,所述装置还包括:
[0027]状态确定模块,用于在从所述全局任务队列中未查找到所述目标任务的情况下,通过所述第一线程,确定其他线程当前的状态;
[0028]状态切换模块,用于如果除了所述第一线程之外还存在处于第一状态的第二线程,则将所述第一线程从所述第一状态切换为挂起状态,所述第一状态是指正在查找所述目标任务的状态。
[0029]可选地,所述查找模块,还用于如果除了所述第一线程之外不存在处于所述第一状态的任一线程,但存在处于第二状态的第三线程,则通过所述第一线程,从所述第三线程的局部任务队列中查找所述目标任务,所述第二状态是指正在执行任务的状态;
[0030]所述执行模块,还用于在从所述第三线程的局部任务队列中查找到所述目标任务的情况下,通过所述第一线程,抢占并执行查找到的所述目标任务。
[0031]可选地,所述查找模块,还用于如果除了所述第一线程之外不存在处于所述第一状态的任一线程,且不存在处于第二状态的任一线程,则通过所述第一线程,从所述多个线程的局部任务队列中查找所述目标任务,所述第二状态是指正在执行任务的状态;
[0032]所述执行模块,还用于在从所述多个线程的局部任务队列中查找到所述目标任务的情况下,通过所述第一线程,抢占并执行查找到的所述目标任务。
[0033]可选地,所述状态切换模块,还用于在从所述多个线程的局部任务队列中未查找到所述目标任务的情况下,将所述第一线程从所述第一状态切换为所述挂起状态。
[0034]可选地,所述装置还包括:
[0035]创建模块,用于创建任务集合,所述任务集合包括多个任务,所述任务集合中的每
个任务与所述任务集合中其他的至少一个任务之间存在依赖关系;
[0036]第一添加模块,用于将未执行且不依赖于其他任务的任务添加至所述全局任务队列中;
[0037]第二添加模块,用于通过所述第一线程,将未执行且所依赖的任务已执行完成的任务添加至所述第一线程的局部任务队列中。
[0038]可选地,每个所述任务具有依赖数量,所述任务的依赖数量是指所述任务所依赖的、且未执行的任务的数量;
[0039]所述第二添加模块,用于通过所述第一线程,将所述依赖数量等于0的任务添加至所述第一线程的局部任务队列中。
[0040]可选地,每个所述任务具有依赖数量,所述任务的依赖数量是指所述任务所依赖的、且未执行的任务的数量;所述装置还包括数量更新模块,所述数量更新模块,用于:
[0041]通过所述第一线程,将第一目标任务执行完成之后,从所述任务集合中确定所述第一目标任务的后续任务,所述第一目标任务的后续任务是指依赖于所述第一目标任务的任务,所述第一目标任务为任一目标任务;
[0042]通过所述第一线程,将所述第一目标任务的后续任务的依赖数量减1。
[0043]可选地,所述装置还包括:...

【技术保护点】

【技术特征摘要】
1.一种任务执行方法,其特征在于,由任务执行系统执行,所述任务执行系统运行有多个线程,每个所述线程具有对应的局部任务队列;所述方法包括:通过第一线程,从除了所述第一线程之外的其他线程的局部任务队列中查找目标任务,所述目标任务是指满足执行条件但还未执行的任务;在从其他线程的局部任务队列中查找到所述目标任务的情况下,通过所述第一线程,抢占并执行查找到的所述目标任务;其中,所述第一线程为所述多个线程中的任一线程。2.根据权利要求1所述的方法,其特征在于,所述通过第一线程,从除了所述第一线程之外的其他线程的局部任务队列中查找目标任务之前,所述方法还包括:通过所述第一线程,从所述第一线程的局部任务队列中查找所述目标任务;所述通过第一线程,从除了所述第一线程之外的其他线程的局部任务队列中查找目标任务,包括:在从所述第一线程的局部任务队列中未查找到所述目标任务的情况下,通过所述第一线程,从其他线程的局部任务队列中查找所述目标任务。3.根据权利要求1所述的方法,其特征在于,所述执行条件包括所依赖的任务已执行完成或者不依赖于其他任务,所述局部任务队列用于存储未执行且所依赖的任务已执行完成的任务,全局任务队列用于存储未执行且不依赖于其他任务的任务;所述方法还包括:在从其他线程的局部任务队列中未查找到所述目标任务的情况下,通过所述第一线程,从所述全局任务队列中查找所述目标任务;在从所述全局任务队列中查找到所述目标任务的情况下,通过所述第一线程,抢占并执行查找到的所述目标任务。4.根据权利要求3所述的方法,其特征在于,所述在从其他线程的局部任务队列中未查找到所述目标任务的情况下,通过所述第一线程,从所述全局任务队列中查找所述目标任务,包括:在从其他线程的局部任务队列中查找所述目标任务的次数达到目标阈值,且仍未查找到所述目标任务的情况下,通过所述第一线程,从所述全局任务队列中查找所述目标任务。5.根据权利要求3所述的方法,其特征在于,所述通过所述第一线程,从所述全局任务队列中查找所述目标任务之后,所述方法还包括:在从所述全局任务队列中未查找到所述目标任务的情况下,通过所述第一线程,确定其他线程当前的状态;如果除了所述第一线程之外还存在处于第一状态的第二线程,则将所述第一线程从所述第一状态切换为挂起状态,所述第一状态是指正在查找所述目标任务的状态。6.根据权利要求5所述的方法,其特征在于,所述在从所述全局任务队列中未查找到所述目标任务的情况下,通过所述第一线程,确定其他线程当前的状态之后,所述方法还包括:如果除了所述第一线程之外不存在处于所述第一状态的任一线程,但存在处于第二状态的第三线程,则通过所述第一线程,从所述第三线程的局部任务队列中查找所述目标任务,所述第二状态是指正在执行任务的状态;在从所述第三线程的局部任务队列中查找到所述目标任务的情况下,通过所述第一线
程,抢占并执行查找到的所述目标任务。7.根据权利要求5所述的方法,其特征在于,所述在从所述全局任务队列中未查找到所述目标任务的情况下,通过所述第一线程,确定其他线程当前的状态之后,所述方法还包括:如果除了所述第一线程之外不存在处于所述第...

【专利技术属性】
技术研发人员:凌飞张永祥夏飞邓君
申请(专利权)人:腾讯科技成都有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1