一种基于队列的线程调度方法及装置与流程

文档序号:11829181阅读:318来源:国知局
一种基于队列的线程调度方法及装置与流程

本发明涉及计算机技术领域,特别是涉及一种基于队列的线程调度方法及装置。



背景技术:

现在很多程序设计中,多线程的使用非常广泛,一个常见的例子就是网络服务器。当有新的连接进来的时候,网络服务器就会创建一个线程去完成当前连接的任务,而网络服务器继续保持监听状态。

但是随着连接数量的增加,线程的频繁调度引起的负载就超过了多线程处理带来的好处,造成系统的性能下降。

因此,如何充分利用多线程的优势,但是又避免线程频繁的调度带来的负载是本领域技术人员亟待解决的问题。



技术实现要素:

本发明的目的是提供一种基于队列的线程调度方法及装置,用于充分利用多线程的优势,但是又避免线程频繁的调度带来的负载。

为解决上述技术问题,本发明提供一种基于队列的线程调度方法,包括:

检测当前系统中的线程拓扑结构的参数,并按照检测结果设置多个线程和存放待执行任务的多个队列;

当有任务加入请求时,按照预定规则将待执行任务加入到所述队列中时,并调度对应的线程以执行所述待执行任务。

优选地,所述检测当前系统中的线程拓扑结构的参数,并按照检测结果设置多个线程和存放待执行任务的多个队列具体包括:

检测所述线程拓扑结构中的逻辑核的数量,并按照所述逻辑核的数量设置相同数量的线程和相同数量的队列。

优选地,所述预定规则包括:

当有所述待执行任务时,按照Round Robin算法把所述待执行任务分配至所述队列中。

优选地,所述预定规则还包括:

当同时有多个待执行任务加入时,按照待执行任务的优先级把所述待执行任务分配至所述队列中。

一种基于队列的线程调度装置,包括:

设置单元,用于检测当前系统中的线程拓扑结构的参数,并按照检测结果设置多个线程和存放待执行任务的多个队列;

执行单元,用于当有任务加入请求时,按照预定规则将待执行任务加入到所述队列中时,并调度对应的线程以执行所述待执行任务。

优选地,所述设置单元具体用于检测所述线程拓扑结构中的逻辑核的数量,并按照所述逻辑核的数量设置相同数量的线程和相同数量的队列。

优选地,所述预定规则包括:

当有所述待执行任务时,按照Round Robin算法把所述待执行任务分配至所述队列中。

优选地,所述预定规则还包括:

当同时有多个待执行任务加入时,按照待执行任务的优先级把所述待执行任务分配至所述队列中。

本发明所提供的基于队列的线程调度方法及装置,首先根据当前系统中的线程拓扑结构的参数设置多个线程和存放待执行任务的多个队列,当有任务加入请求时,按照预定规则将待执行任务加入到队列中,并调度对应的线程以执行待执行任务。由此可见,本方法无需太多线程,无需增加硬件资源,能够显著降低系统的负载,因此提高了系统的性能。

附图说明

为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明提供的一种基于队列的线程调度方法的流程图;

图2为本发明提供的一种基于队列的线程调度装置的结构图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本发明保护范围。

本发明的核心是提供一种基于队列的线程调度方法及装置。

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。

图1为本发明提供的一种基于队列的线程调度方法的流程图。如图1所示,基于队列的线程调度方法包括:

S10:检测当前系统中的线程拓扑结构的参数,并按照检测结果设置多个线程和存放待执行任务的多个队列。

在具体实施中,如果设置的线程太多,虽然能够加快任务处理的速度,但是给系统的调度增加了太多的负载,严重时容易导致宕机。考虑到这一因素,本步骤中,首先检测当前系统中的线程拓扑结构的参数,依据检测结果设置多个线程和多个队列。由于考虑到系统本身的线程拓扑结构才这是的线程数量和队列数量,因此能够降低过多线程给系统造成的调度压力。

可以理解的是,线程拓扑结构的参数的选取可以有很多种,例如CPU数量、逻辑核数量等。作为优选地实施方式,可以以逻辑核数量作为参数来选取,即检测线程拓扑结构中的逻辑核的数量,并按照逻辑核的数量设置相同数量的线程和相同数量的队列。因为线程数和系统逻辑核的数量一一对应,因此每个线程都会被尽量保证与CPU亲和性(某个线程一直在某个CPU上运行的能力),从而避免了线程调度和迁移。

S11:当有任务加入请求时,按照预定规则将待执行任务加入到队列中时,并调度对应的线程以执行待执行任务。

通过步骤S10设置好了线程和队列,当有待执行任务时,有可能当前的线程无法同时处理完毕,因此,需要将待执行任务按照预定规则分配到队列中,最后按照队列中的顺序执行即可。具体是队列用于存放待执行任务起到一个缓存的作用。当某个队列中的待执行任务达到执行时间时,则调度对应的线程执行该任务即可。

本实施例提供的基于队列的线程调度方法,首先根据当前系统中的线程拓扑结构的参数设置多个线程和存放待执行任务的多个队列,当有任务加入请求时,按照预定规则将待执行任务加入到队列中,并调度对应的线程以执行待执行任务。由此可见,本方法无需太多线程,无需增加硬件资源,能够显著降低系统的负载,因此提高了系统的性能。

在上述实施例的基础上,预定规则包括:

当有待执行任务时,按照Round Robin算法把待执行任务分配至队列中。

在具体实施中,当有新的任务时,需要将该任务分配至上述步骤设置的队列中,这里采用的是Round Robin算法,可以理解的是,如何将待执行任务分配到队列中有多种方法可以按照时间的先后等进行分配,并不是只有这一种分配方法。

在上述实施例的基础上,预定规则还包括:

当同时有多个待执行任务加入时,按照待执行任务的优先级把待执行任务分配至队列中。

如果同时又多个待执行任务加入,则每个队列中就会包含多个待处理的任务,但是有的待执行任务的优先级较高,为了保证优先级较高的待执行任务尽早执行,本实施例中,按照优先级分配至队列中,即优先级高的待执行任务排列在优先级低的待执行任务的前面。

图2为本发明提供的一种基于队列的线程调度装置的结构图。如图2所示,基于队列的线程调度装置包括:

设置单元10,用于检测当前系统中的线程拓扑结构的参数,并按照检测结果设置多个线程和存放待执行任务的多个队列。

在具体实施中,如果设置的线程太多,虽然能够加快任务处理的速度,但是给系统的调度增加了太多的负载,严重时容易导致宕机。考虑到这一因素,本实施例中,首先设置单元10检测当前系统中的线程拓扑结构的参数,依据检测结果设置多个线程和多个队列。由于考虑到系统本身的线程拓扑结构才这是的线程数量和队列数量,因此能够降低过多线程给系统造成的调度压力。

可以理解的是,线程拓扑结构的参数的选取可以有很多种,例如CPU数量、逻辑核数量等。作为优选地实施方式,可以以逻辑核数量作为参数来选取,即检测线程拓扑结构中的逻辑核的数量,并按照逻辑核的数量设置相同数量的线程和相同数量的队列。因为线程数和系统逻辑核的数量一一对应,因此每个线程都会被尽量保证与CPU亲和性(某个线程一直在某个CPU上运行的能力),从而避免了线程调度和迁移。

执行单元11,用于当有任务加入请求时,按照预定规则将待执行任务加入到队列中时,并调度对应的线程以执行待执行任务。

设置单元10设置好了线程和队列,当有待执行任务时,有可能当前的线程无法同时处理完毕,因此,需要将待执行任务按照预定规则分配到队列中,最后按照队列中的顺序执行即可。具体是队列用于存放待执行任务起到一个缓存的作用。当某个队列中的待执行任务达到执行时间时,则调度对应的线程执行该任务即可。

本实施例提供的基于队列的线程调度装置,首先根据当前系统中的线程拓扑结构的参数设置多个线程和存放待执行任务的多个队列,当有任务加入请求时,按照预定规则将待执行任务加入到队列中,并调度对应的线程以执行待执行任务。由此可见,本装置无需太多线程,无需增加硬件资源,能够显著降低系统的负载,因此提高了系统的性能。

作为优选地实施方式,设置单元10具体用于检测线程拓扑结构中的逻辑核的数量,并按照逻辑核的数量设置相同数量的线程和相同数量的队列。

作为优选地实施方式,预定规则包括:当有待执行任务时,按照Round Robin算法把待执行任务分配至队列中。

作为优选地实施方式,预定规则还包括:当同时有多个待执行任务加入时,按照待执行任务的优先级把待执行任务分配至队列中。

由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。

以上对本发明所提供的基于队列的线程调度方法及装置进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1