一种基于线程池的任务调度方法、装置及系统制造方法及图纸

技术编号:33334511 阅读:10 留言:0更新日期:2022-05-08 09:16
本申请公开了一种基于线程池的任务调度方法,主线程将目标任务卸载至主线程队列,并向第二主线程管道写入事件使得第一主线程管道可读,以便于线程池中的线程在第一主线程管道可读时从主线程队列获取目标任务并执行任务处理函数,得到处理结果,进而将处理结果写入线程池队列,并向第二线程池管道写入事件使得第一线程池管道可读;主线程监听第一线程池管道,在第一线程池管道可读时从线程池队列中获取处理结果。可见,该方法能够将计算工作卸载到线程池中执行,达到加快处理速度,降低函数队列调度时延的目的。此外,本申请还提供了一种基于线程池的任务调度装置、系统、计算机设备及可读存储介质,其技术效果与上述方法的技术效果相对应。技术效果相对应。技术效果相对应。

【技术实现步骤摘要】
一种基于线程池的任务调度方法、装置及系统


[0001]本申请涉及计算机
,特别涉及一种基于线程池的任务调度方法、装置、系统、计算机设备及可读存储介质。

技术介绍

[0002]商用路由协议平台ZebOS系统的线程机制,是以函数作为最小调度单位,在单线程环境下线程进行非抢占式调度,每一个参与调度的执行函数必须执行完成,才会调度下一个函数。这种调度方式有一个很明显缺点,即调度周期随被调度的函数执行时间的不同而不同。若调度函数队列中存在一些执行时间较长的函数,则其他实时性敏感的函数调度时间就也会变得非常长。

技术实现思路

[0003]本申请的目的是提供一种基于线程池的任务调度方法、装置、系统、计算机设备及可读存储介质,用以解决目前的任务调度方案受限于函数执行时间,导致效率较低的问题。其具体方案如下:第一方面,本申请提供了一种基于线程池的任务调度方法,应用于主线程,包括:将目标任务卸载至主线程队列,并向第二主线程管道写入事件使得第一主线程管道可读,以便于线程池中用于监听所述第一主线程管道的线程在所述第一主线程管道可读时从所述主线程队列获取所述目标任务并执行任务处理函数,得到所述目标任务的处理结果,进而将所述目标任务的处理结果写入线程池队列,并向第二线程池管道写入事件使得第一线程池管道可读;监听所述第一线程池管道,在所述第一线程池管道可读时,从所述线程池队列中获取所述目标任务的处理结果。
[0004]可选的,所述目标任务包括耗时超过时间阈值的任务和/或与目标业务无关的任务。
[0005]可选的,每个所述目标任务有且仅有一个线程获取到。
[0006]第二方面,本申请提供了一种基于线程池的任务调度装置,应用于主线程,包括:任务卸载模块,用于将目标任务卸载至主线程队列,并向第二主线程管道写入事件使得第一主线程管道可读,以便于线程池中用于监听所述第一主线程管道的线程在所述第一主线程管道可读时从所述主线程队列获取所述目标任务并执行任务处理函数,得到所述目标任务的处理结果,进而将所述目标任务的处理结果写入线程池队列,并向第二线程池管道写入事件使得第一线程池管道可读;处理结果监听模块,用于监听所述第一线程池管道,在所述第一线程池管道可读时,从所述线程池队列中获取所述目标任务的处理结果。
[0007]第三方面,本申请提供了一种基于线程池的任务调度方法,应用于线程池,包括:控制线程池中的线程监听第一主线程管道,在所述第一主线程管道可读时,从主
线程队列中获取目标任务,其中所述目标任务为主线程卸载至所述主线程队列的,所述主线程在将所述目标任务卸载至所述主线程队列时还向所述第二主线程管道写入事件使得所述第一主线程管道可读;控制线程池中的线程执行任务处理函数,得到所述目标任务的处理结果,将所述目标任务的处理结果写入线程池队列中,并向第二线程池管道写入事件使得第一线程池管道可读,以便于用于监听所述第一线程池管道的主线程在所述第一线程池管道可读时,从所述线程池队列中获取所述目标任务的处理结果。
[0008]第四方面,本申请提供了一种基于线程池的任务调度装置,应用于线程池,包括:任务监听模块,用于控制线程池中的线程监听第一主线程管道,在所述第一主线程管道可读时,从主线程队列中获取目标任务,其中所述目标任务为主线程卸载至所述主线程队列的,所述主线程在将所述目标任务卸载至所述主线程队列时还向所述第二主线程管道写入事件使得所述第一主线程管道可读;任务处理模块,用于控制线程池中的线程执行任务处理函数,得到所述目标任务的处理结果,将所述目标任务的处理结果写入线程池队列中,并向第二线程池管道写入事件使得第一线程池管道可读,以便于用于监听所述第一线程池管道的主线程在所述第一线程池管道可读时,从所述线程池队列中获取所述目标任务的处理结果。
[0009]第五方面,本申请提供了一种基于线程池的任务调度系统,包括主线程和线程池;其中,所述主线程用于将目标任务卸载至主线程队列,并向第二主线程管道写入事件使得第一主线程管道可读;所述线程池中的线程用于监听所述第一主线程管道,在所述第一主线程管道可读时,线程从所述主线程队列中获取所述目标任务并执行任务处理函数,得到所述目标任务的处理结果,进而将所述目标任务的处理结果写入线程池队列中,并向第二线程池管道写入事件使得第一线程池管道可读;所述主线程还用于监听所述第一线程池管道,在所述第一线程池管道可读时,从所述线程池队列中获取所述目标任务的处理结果。
[0010]第六方面,本申请提供了一种计算机设备,包括:存储器:用于存储计算机程序;处理器:用于执行所述计算机程序,以实现如上所述的基于线程池的任务调度方法。
[0011]第七方面,本申请提供了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时用于实现如上所述的基于线程池的任务调度方法。
[0012]本申请所提供的一种基于线程池的任务调度方法,应用于主线程,包括:将目标任务卸载至主线程队列,并向第二主线程管道写入事件使得第一主线程管道可读,以便于线程池中用于监听第一主线程管道的线程在第一主线程管道可读时从主线程队列获取目标任务并执行任务处理函数,得到目标任务的处理结果,进而将目标任务的处理结果写入线程池队列,并向第二线程池管道写入事件使得第一线程池管道可读;监听第一线程池管道,在第一线程池管道可读时,从线程池队列中获取目标任务的处理结果。可见,该方法能够将一些复杂的计算任务卸载到线程池中执行,达到加快处理速度,降低函数队列调度时延的目的。
[0013]此外,本申请还提供了一种基于线程池的任务调度装置、系统、计算机设备及可读
存储介质,其技术效果与上述方法的技术效果相对应,这里不再赘述。
附图说明
[0014]为了更清楚的说明本申请实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0015]图1为本申请所提供的应用于主线程的基于线程池的任务调度方法实施例的示意图;图2为本申请所提供的应用于主线程的基于线程池的任务调度装置实施例的示意图;图3为本申请所提供的应用于线程池的基于线程池的任务调度方法实施例的示意图;图4为本申请所提供的应用于线程池的基于线程池的任务调度装置实施例的示意图;图5为本申请所提供的计算机设备实施例的示意图。
具体实施方式
[0016]为了使本
的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0017]本申请的核心是提供一种基于线程池的任务调度方法、装置、系统、计算机设备及可读存储介质,能够将一些复杂的计算任务卸载本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于线程池的任务调度方法,其特征在于,应用于ZebOS主线程,包括:将目标任务卸载至主线程队列,并向第二主线程管道写入事件使得第一主线程管道可读,以便于线程池中用于监听所述第一主线程管道的线程在所述第一主线程管道可读时从所述主线程队列获取所述目标任务并执行任务处理函数,得到所述目标任务的处理结果,进而将所述目标任务的处理结果写入线程池队列,并向第二线程池管道写入事件使得第一线程池管道可读;监听所述第一线程池管道,在所述第一线程池管道可读时,从所述线程池队列中获取所述目标任务的处理结果。2.如权利要求1所述的方法,其特征在于,所述目标任务包括耗时超过时间阈值的任务和/或与目标业务无关的任务。3.如权利要求1所述的方法,其特征在于,每个所述目标任务有且仅有一个线程获取到。4.一种基于线程池的任务调度装置,其特征在于,应用于ZebOS主线程,包括:任务卸载模块,用于将目标任务卸载至主线程队列,并向第二主线程管道写入事件使得第一主线程管道可读,以便于线程池中用于监听所述第一主线程管道的线程在所述第一主线程管道可读时从所述主线程队列获取所述目标任务并执行任务处理函数,得到所述目标任务的处理结果,进而将所述目标任务的处理结果写入线程池队列,并向第二线程池管道写入事件使得第一线程池管道可读;处理结果监听模块,用于监听所述第一线程池管道,在所述第一线程池管道可读时,从所述线程池队列中获取所述目标任务的处理结果。5.一种基于线程池的任务调度方法,其特征在于,应用于ZebOS线程池,包括:控制线程池中的线程监听第一主线程管道,在所述第一主线程管道可读时,从主线程队列中获取目标任务,其中所述目标任务为主线程卸载至所述主线程队列的,所述主线程在将所述目标任务卸载至所述主线程队列时还向第二主线程管道写入事件使得所述第一主线程管道可读;控制线程池中的线程执行任务处理函数,得到所述目标任务的处理结果,将所述目标任务的处理结果写入线程池队列中,并向第二线程池管道写入事件使得...

【专利技术属性】
技术研发人员:陈一骄高仙恩胡都欢童云龙张鹏高智斐曾晓琪唐靖飚屈晓阳王克波
申请(专利权)人:戎腾科技长沙有限公司
类型:发明
国别省市:

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

1