CN110795222A - 一种多线程任务调度方法、装置、设备及可读介质 - Google Patents
一种多线程任务调度方法、装置、设备及可读介质 Download PDFInfo
- Publication number
- CN110795222A CN110795222A CN201911026039.XA CN201911026039A CN110795222A CN 110795222 A CN110795222 A CN 110795222A CN 201911026039 A CN201911026039 A CN 201911026039A CN 110795222 A CN110795222 A CN 110795222A
- Authority
- CN
- China
- Prior art keywords
- task
- task queue
- tasks
- resource pool
- queue
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请公开了一种多线程任务调度方法、装置、设备及计算机可读存储介质,方法包括:根据CPU核数创建固定数目的工作线程;设置N×N型的矩阵模型;N等于工作线程的数目,每一行为一个任务队列,每个任务队列对应一个工作线程,每一列为一个资源池,资源池与业务模块相对应;利用业务模块向资源池中添加任务,以使任务被添加到任务队列中;利用与任务队列对应的工作线程对任务队列进行轮询,执行任务队列中包含的任务,并将执行完的任务从任务队列中删除。本申请公开的上述技术方案,降低工作线程的数量,以降低锁竞争的几率,并通过工作线程所负责的任务队列中任务的切换来实现任务的处理,以降低线程上下文切换的开销,提高任务的处理效率。
Description
技术领域
本申请涉及存储技术领域,更具体地说,涉及一种多线程任务调度方法、装置、设备及计算机可读存储介质。
背景技术
随着存储系统要处理的IO请求(即所要执行的任务)越来越多,对存储系统的性能要求也越来越高。
在所要执行的任务越来越多的情况下,为了提高任务处理性能,目前,常采用的作用是创建尽可能多的线程来增加并发度。但是,随着线程数量的增多,线程之间锁竞争的可能性就会增大,并且线程间的上下文切换也就越频繁,此时,则会导致切换开销的增大。另外,由于线程切换涉及到用户空间到内核空间的切换、上下文的保护和恢复,因此,为了执行线程切换,则大约需要调用上千行的代码,而这会对任务处理性能造成很大的影响,很有可能会造成不必要的延迟。
综上所述,如何降低锁竞争的几率和线程上下文切换的开销,并提高任务的处理效率,是目前本领域技术人员亟待解决的技术问题。
发明内容
有鉴于此,本申请的目的是提供一种多线程任务调度方法、装置、设备及计算机可读存储介质,用于降低锁竞争的几率和线程上下文切换的开销,并提高任务的处理效率。
为了实现上述目的,本申请提供如下技术方案:
一种多线程任务调度方法,包括:
根据CPU核数创建固定数目的工作线程;
设置一N×N型的矩阵模型;其中,N等于所述工作线程的数目,且每一行为一个任务队列,每个所述任务队列对应一个所述工作线程,每一列为一个资源池,所述资源池与业务模块相对应;
利用所述业务模块向所述资源池中添加任务,以使所述任务被添加到所述任务队列中;
利用与所述任务队列对应的所述工作线程对所述任务队列进行轮询,执行所述任务队列中包含的任务,并将执行完的任务从所述任务队列中删除。
优选的,在利用所述业务模块向所述资源池中添加任务之前,还包括:
选定M列所述资源池作为与所述资源池对应的业务模块的私有资源池,并将剩余N-M列所述资源池作为各所述业务模块的共享资源池;其中,M大于0且小于等于N;
相应地,在利用所述业务模块向所述资源池中添加任务时,还包括:
若所述资源池为所述共享资源池,则对所述任务进行加锁。
优选的,利用所述业务模块向所述资源池中添加任务,以使所述任务被添加到所述任务队列中,包括:
利用所述业务模块向指定的任务队列中添加所述任务。
优选的,利用所述业务模块向所述资源池中添加任务,以使所述任务被添加到所述任务队列中,包括:
利用所述业务模块向所述资源池中添加任务,并通过所述矩阵模型基于负载均衡算法将所述任务分配到所述任务队列中。
优选的,在设置一N×N型的矩阵模型之后,还包括:
选定K行所述任务队列作为快任务队列,并将剩余N-K行所述任务队列作为慢任务队列;其中,K大于等于0且小于等于N,且所述快任务队列中包含的任务对执行时间的要求高于所述慢任务队列中包含的任务对执行时间的要求;
相应地,在将执行完的任务从所述任务队列中删除之前,还包括:
若所述任务队列为所述快任务队列,则获取所述快任务队列中包含的任务的执行时间;
判断所述执行时间是否超过预定值,若是,则发出任务执行失败的提示。
优选的,根据CPU核数创建固定数目的工作线程,包括:
创建与所述CPU核数相同数目的所述工作线程。
一种多线程任务调度装置,包括:
创建模块,用于根据CPU核数创建固定数目的工作线程;
设置模块,用于设置一N×N型的矩阵模型;其中,N等于所述工作线程的数目,且每一行为一个任务队列,每个所述任务队列对应一个所述工作线程,每一列为一个资源池,所述资源池与业务模块相对应;
添加模块,用于利用所述业务模块向所述资源池中添加任务,以使所述任务被添加到所述任务队列中;
执行模块,用于利用与所述任务队列对应的所述工作线程对所述任务队列进行轮询,执行所述任务队列中包含的任务,并将执行完的任务从所述任务队列中删除。
优选的,还包括:
选定模块,用于在利用所述业务模块向所述资源池中添加任务之前,选定M列所述资源池作为与所述资源池对应的业务模块的私有资源池,并将剩余N-M列所述资源池作为各所述业务模块的共享资源池;其中,M大于0且小于等于N;
相应地,还包括:
加锁模块,用于在利用所述业务模块向所述资源池中添加任务时,若所述资源池为所述共享资源池,则对所述任务进行加锁。
一种多线程任务调度设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述任一项所述的多线程任务调度方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述的多线程任务调度方法的步骤。
本申请提供了一种多线程任务调度方法、装置、设备及计算机可读存储介质,其中,该方法包括:根据CPU核数创建固定数目的工作线程;设置一N×N型的矩阵模型;其中,N等于工作线程的数目,且每一行为一个任务队列,每个任务队列对应一个工作线程,每一列为一个资源池,资源池与业务模块相对应;利用业务模块向资源池中添加任务,以使任务被添加到任务队列中;利用与任务队列对应的工作线程对任务队列进行轮询,执行任务队列中包含的任务,并将执行完的任务从任务队列中删除。
本申请公开的上述技术方案,根据CPU核数创建固定数目的工作线程,且设置行为任务队列、列为资源池的N×N型矩阵模型,由每个工作线程负责一个任务队列,利用工作线程对其负责的任务队列进行轮询,执行任务队列中的任务并删除所执行完的任务,且通过业务模块向资源池中添加任务,即通过工作线程所负责的任务队列中任务的切换来实现任务的处理而无需通过工作线程进行上下文的切换来实现任务的处理,从而降低线程上下文切换的开销,并减少代码的调用数量,以提高任务的处理效率,尽量避免造成不必要的延迟,同时,由于可以直接根据CPU核数创建固定数目的工作线程,因此,可以降低工作线程的数量,从而可以降低锁竞争的几率,以提高存储系统的整体性能。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的一种多线程任务调度方法的流程图;
图2为本申请实施例提供的所设置的矩阵模型的一具体实施例的结构示意图;
图3为本申请实施例提供的一种多线程任务调度装置的结构示意图;
图4为本申请实施例提供的一种多线程任务调度设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参见图1和图2,其中,图1示出了本申请实施例提供的一种多线程任务调度方法的流程图,图2示出了本申请实施例提供的所设置的矩阵模型的一具体实施例的结构示意图。本申请实施例提供的一种多线程任务调度方法,可以包括:
S11:根据CPU核数创建固定数目的工作线程。
获取存储系统中CPU核数,根据CPU核数创建固定数目的工作线程,以不再根据所要执行的任务创建尽可能多的线程,即减少工作线程的创建数量,从而降低线程之间锁竞争的几率,以提高存储系统的整体性能。
S12:设置一N×N型的矩阵模型;其中,N等于工作线程的数目,且每一行为一个任务队列,每个任务队列对应一个工作线程,同时,每一列为一个资源池,资源池与业务模块相对应。
根据所创建的固定数目的工作线程设置一N×N型的矩阵模型,其中,N等于工作线程的数目。并且在所设置的矩阵模型中,每一行为一个任务队列,每个任务队列均对应一个工作线程,即每个工作线程负责一个任务队列,每一列为一个资源池,资源池与业务模块相对应,以由业务模块向资源池中添加任务。
如图2所示,其以4×4型的矩阵模型为例进行说明,4×4型的矩阵模型中的第一行的任务队列0由工作线程0负责,第二行的任务队列1由工作线程1负责,第三行的任务队列2由工作线程2负责,第四行的任务队列3由工作线程3负责,且该矩阵模型包括资源池0、资源池1、资源池2、资源池3这四个资源池,这四个资源池分别与业务模块相对应。
S13:利用业务模块向资源池中添加任务,以使任务被添加到任务队列中。
在设置完矩阵模型之后,可以利用与资源池相对应的业务模块向资源池中添加任务,以使得所添加的任务被分配、添加到任务队列中,从而便于与任务队列相对应的工作线程可以执行该任务队列中所包含的任务。
其中,在本申请中,业务模块需要做的是仅仅是将任务添加到任务队列中,并在任务处理函数中实现任务逻辑(即确定所添加的任务具体是干什么的)即可。
S14:利用与任务队列对应的工作线程对任务队列进行轮询,执行任务队列中包含的任务,并将执行完的任务从任务队列中删除。
在利用业务模块向资源池中添加任务,以使得任务被添加到任务队列中之后,可以利用与任务队列对应的工作线程对任务队列进行轮询,以对任务队列中的任务进行查看,确定任务队列中的任务状态,并执行任务队列中包含的任务,且在执行完任务之后将执行完的任务从任务队列中删除,以使得业务模块所添加的新任务可以进入到任务队列中。
在本申请中,可以将工作线程类比为CPU,工作线程所负责的任务队列类比为线程就绪队列,相应地,工作线程执行任务就相当于CPU执行就绪线程。
通过每个工作线程负责一个任务队列,并在任务队列中的任务被执行完后从任务队列中进行删除,以实现任务的切换,而非通过工作线程上下文的切换来对任务进行处理,从而降低工作线程上下文切换的开销,而且可以不再需要调用上千行的代码来实现工作线程上下文的切换,因此,可以提高任务处理性能,降低不必要的任务处理延迟,提高任务处理效率。另外,还可以通过多个任务队列实现对高并发任务的处理,以提高存储系统的吞吐量。
本申请公开的上述技术方案,根据CPU核数创建固定数目的工作线程,且设置行为任务队列、列为资源池的N×N型矩阵模型,由每个工作线程负责一个任务队列,利用工作线程对其负责的任务队列进行轮询,执行任务队列中的任务并删除所执行完的任务,且通过业务模块向资源池中添加任务,即通过工作线程所负责的任务队列中任务的切换来实现任务的处理而无需通过工作线程进行上下文的切换来实现任务的处理,从而降低线程上下文切换的开销,并减少代码的调用数量,以提高任务的处理效率,尽量避免造成不必要的延迟,同时,由于可以直接根据CPU核数创建固定数目的工作线程,因此,可以降低工作线程的数量,从而可以降低锁竞争的几率,以提高存储系统的整体性能。
本申请实施例提供的一种多线程任务调度方法,在利用业务模块向资源池中添加任务之前,还可以包括:
选定M列资源池作为与资源池对应的业务模块的私有资源池,并将剩余N-M列资源池作为各业务模块的共享资源池;其中,M大于0且小于等于N;
相应地,在利用业务模块向资源池中添加任务时,还可以包括:
若资源池为共享资源池,则对任务进行加锁。
在向资源池中添加任务之前,可以从N列资源池中选定M列资源池作为私有资源池,该私有资源池为与之对应的业务模块所独有,当业务模块向私有资源池中添加任务时,不会与其他业务模块产生竞争,由于这一过程为单生产者-单消费者的模式,因此,在业务模块向私有资源池中添加任务时可以不进行加锁,即可以设置为无锁的队列结构,以提高任务处理的效率。需要说明的是,这里提及的M为大于0且小于等于N的整数。
同时,可以将剩余N-M列资源池作为各业务模块的共享资源池,即各业务模块均可以向这类资源池中添加任务。在利用业务模块向共享资源池中添加任务时,为了提高任务处理的性能,则可以对所添加的任务进行加锁。
以图2为例,其中,资源池0可以为共享资源池,资源池1、资源池2及资源池3可以为私有资源池,其中,资源池1可以为业务模块A所独有,资源池2可以为业务模块B所独有,资源池3可以为业务模块C所独有。
通过将资源池设置为私有资源池和共享资源池且为私有资源池中添加任务时无需进行加锁来降低锁竞争的几率,以提高任务处理效率和存储系统的整体性能。另外,通过设置共享资源池还可以使得存储系统中所具有的业务模块的数量大于资源池的数量,以使得更多的任务可以被添加到矩阵模型中,从而提高存储系统的任务处理性能。
本申请实施例提供的一种多线程任务调度方法,利用业务模块向资源池中添加任务,以使任务被添加到任务队列中,可以包括:
利用业务模块向指定的任务队列中添加任务。
在利用业务模块向资源池中添加业务时,可以利用业务模块向指定的任务队列添加任务,即使得该任务可以被指定的工作线程进行处理。
本申请实施例提供的一种多线程任务调度方法,利用业务模块向资源池中添加任务,以使任务被添加到任务队列中,可以包括:
利用业务模块向资源池中添加任务,并通过矩阵模型基于负载均衡算法将任务分配到任务队列中。
当然,在利用业务模块向资源池中添加业务时,可以利用业务模块向资源池中添加业务,然后,由矩阵模型通过负载均衡算法来将任务分配到各任务队列中,以保证每个工作线程的负载是均衡的,从而提高存储系统的整体性能。
本申请实施例提供的一种多线程任务调度方法,在设置一N×N型的矩阵模型之后,还可以包括:
选定K行任务队列作为快任务队列,并将剩余N-K行任务队列作为慢任务队列;其中,K大于等于0且小于等于N,且快任务队列中包含的任务对执行时间的要求高于慢任务队列中包含的任务对执行时间的要求;
相应地,在将执行完的任务从任务队列中删除之前,还可以包括:
若任务队列为快任务队列,则获取快任务队列中包含的任务的执行时间;
判断执行时间是否超过预定值,若是,则发出任务执行失败的提示。
在设置完矩阵模型之后,可以从N行任务队列中选定K行任务队列作为快任务队列,并将剩余N-K行任务队列作为慢任务队列,其中,快任务队列对任务的执行时间有较严格的控制;慢任务队列对任务的执行时间没有太严格的控制,其允许包含执行时间比较长的任务,也就是说,快任务队列中包含的任务对执行时间的要求要高于慢任务队列中包含的任务对执行时间的要求。
在确定完快任务队列和慢任务队列之后,在将执行完的任务从任务队列中删除之前,若该任务队列的类型具体为快任务队列,则在任务执行完成之后获取快任务队列中包含的任务的执行时间,并判断该执行时间是否超过预定值,若是,则发出任务执行失败的提示,以便于用户可以及时了解到这一情况。其中,这里提及的执行时间具体的是任务从开始执行到执行完所耗费的时间。
如图2所示,其中,任务队列0为慢任务队列,任务队列1、任务队列2及任务队列3均可以为快任务队列。在设定完快、慢任务队列之后,任务在被添加到资源池中之后,可以根据任务对执行时间的要求而被分配到对应的任务队列中,具体地,当任务对执行时间的要求比较高时,则可以被分配到快任务队列中,当任务对执行时间的要求比较低时,则可以被分配到慢任务队列中。
本申请实施例提供的一种多线程任务调度方法,根据CPU核数创建固定数目的工作线程,可以包括:
创建与CPU核数相同数目的工作线程。
在根据CPU核数创建工作线程时,具体可以创建与CPU核数相同数目的工作线程,例如:若CPU核数为4,则可以创建4个工作线程,以使得工作线程所对应的任务可以被平均分配到CPU核上进行运行。
本申请实施例还提供了一种多线程任务调度装置,参见图3,其示出了本申请实施例提供的一种多线程任务调度装置的结构示意图,可以包括:
创建模块31,用于根据CPU核数创建固定数目的工作线程;
设置模块32,用于设置一N×N型的矩阵模型;其中,N等于工作线程的数目,且每一行为一个任务队列,每个任务队列对应一个工作线程,每一列为一个资源池,资源池与业务模块相对应;
添加模块33,用于利用业务模块向资源池中添加任务,以使任务被添加到任务队列中;
执行模块34,用于利用与任务队列对应的工作线程对任务队列进行轮询,执行任务队列中包含的任务,并将执行完的任务从任务队列中删除。
本申请实施例提供的一种多线程任务调度装置,还可以包括:
第一选定模块,用于在利用业务模块向资源池中添加任务之前,选定M列资源池作为与资源池对应的业务模块的私有资源池,并将剩余N-M列资源池作为各业务模块的共享资源池;其中,M大于0且小于等于N;
相应地,还可以包括:
加锁模块,用于在利用业务模块向资源池中添加任务时,若资源池为共享资源池,对任务进行加锁。
本申请实施例提供的一种多线程任务调度装置,添加模块33可以包括:
第一添加单元,用于利用业务模块向指定的任务队列中添加任务。
本申请实施例提供的一种多线程任务调度装置,添加模块33可以包括:
第二添加单元,用于利用业务模块向资源池中添加任务,并通过矩阵模型基于负载均衡算法将任务分配到任务队列中。
本申请实施例提供的一种多线程任务调度装置,还可以包括:
第二选定模块,用于在利用业务模块向资源池中添加任务之前,选定K行任务队列作为快任务队列,并将剩余N-K行任务队列作为慢任务队列;其中,K大于等于0且小于等于N,且快任务队列中包含的任务对执行时间的要求高于慢任务队列中包含的任务对执行时间的要求;
相应地,还可以包括:
获取模块,用于在将执行完的任务从任务队列中删除之前,若任务队列为快任务队列,则获取快任务队列中包含的任务的执行时间;
判断模块,用于判断执行时间是否超过预定值,若是,则发出任务执行失败的提示。
本申请实施例提供的一种多线程任务调度装置,创建模块31可以包括:
创建单元,用于创建与CPU核数相同数目的工作线程。
本申请实施例提供的一种多线程任务调度设备,参见图4,其示出了本申请实施例提供的一种多线程任务调度设备的结构示意图,可以包括:
存储器41,用于存储计算机程序;
处理器42,用于执行上述存储器41存储的计算机程序时可实现如下步骤:
根据CPU核数创建固定数目的工作线程;设置一N×N型的矩阵模型;其中,N等于工作线程的数目,且每一行为一个任务队列,每个任务队列对应一个工作线程,每一列为一个资源池,资源池与业务模块相对应;利用业务模块向资源池中添加任务,以使任务被添加到任务队列中;利用与任务队列对应的工作线程对任务队列进行轮询,执行任务队列中包含的任务,并将执行完的任务从任务队列中删除。
本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现如下步骤:
根据CPU核数创建固定数目的工作线程;设置一N×N型的矩阵模型;其中,N等于工作线程的数目,且每一行为一个任务队列,每个任务队列对应一个工作线程,每一列为一个资源池,资源池与业务模块相对应;利用业务模块向资源池中添加任务,以使任务被添加到任务队列中;利用与任务队列对应的工作线程对任务队列进行轮询,执行任务队列中包含的任务,并将执行完的任务从任务队列中删除。
该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请实施例提供的一种多线程任务调度装置、设备及计算机可读存储介质中相关部分的说明可以参见本申请实施例提供的一种多线程任务调度方法中的对应部分的详细说明,在此不再赘述。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。另外,本申请实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种多线程任务调度方法,其特征在于,包括:
根据CPU核数创建固定数目的工作线程;
设置一N×N型的矩阵模型;其中,N等于所述工作线程的数目,且每一行为一个任务队列,每个所述任务队列对应一个所述工作线程,每一列为一个资源池,所述资源池与业务模块相对应;
利用所述业务模块向所述资源池中添加任务,以使所述任务被添加到所述任务队列中;
利用与所述任务队列对应的所述工作线程对所述任务队列进行轮询,执行所述任务队列中包含的任务,并将执行完的任务从所述任务队列中删除。
2.根据权利要求1所述的多线程任务调度方法,其特征在于,在利用所述业务模块向所述资源池中添加任务之前,还包括:
选定M列所述资源池作为与所述资源池对应的业务模块的私有资源池,并将剩余N-M列所述资源池作为各所述业务模块的共享资源池;其中,M大于0且小于等于N;
相应地,在利用所述业务模块向所述资源池中添加任务时,还包括:
若所述资源池为所述共享资源池,则对所述任务进行加锁。
3.根据权利要求1所述的线程任务调度方法,其特征在于,利用所述业务模块向所述资源池中添加任务,以使所述任务被添加到所述任务队列中,包括:
利用所述业务模块向指定的任务队列中添加所述任务。
4.根据权利要求1所述的线程任务调度方法,其特征在于,利用所述业务模块向所述资源池中添加任务,以使所述任务被添加到所述任务队列中,包括:
利用所述业务模块向所述资源池中添加任务,并通过所述矩阵模型基于负载均衡算法将所述任务分配到所述任务队列中。
5.根据权利要求1至4任一项所述的线程任务调度方法,其特征在于,在设置一N×N型的矩阵模型之后,还包括:
选定K行所述任务队列作为快任务队列,并将剩余N-K行所述任务队列作为慢任务队列;其中,K大于等于0且小于等于N,且所述快任务队列中包含的任务对执行时间的要求高于所述慢任务队列中包含的任务对执行时间的要求;
相应地,在将执行完的任务从所述任务队列中删除之前,还包括:
若所述任务队列为所述快任务队列,则获取所述快任务队列中包含的任务的执行时间;
判断所述执行时间是否超过预定值,若是,则发出任务执行失败的提示。
6.根据权利要求5所述的多线程任务调度方法,其特征在于,根据CPU核数创建固定数目的工作线程,包括:
创建与所述CPU核数相同数目的所述工作线程。
7.一种多线程任务调度装置,其特征在于,包括:
创建模块,用于根据CPU核数创建固定数目的工作线程;
设置模块,用于设置一N×N型的矩阵模型;其中,N等于所述工作线程的数目,且每一行为一个任务队列,每个所述任务队列对应一个所述工作线程,每一列为一个资源池,所述资源池与业务模块相对应;
添加模块,用于利用所述业务模块向所述资源池中添加任务,以使所述任务被添加到所述任务队列中;
执行模块,用于利用与所述任务队列对应的所述工作线程对所述任务队列进行轮询,执行所述任务队列中包含的任务,并将执行完的任务从所述任务队列中删除。
8.根据权利要求7所述的多线程任务调度装置,其特征在于,还包括:
选定模块,用于在利用所述业务模块向所述资源池中添加任务之前,选定M列所述资源池作为与所述资源池对应的业务模块的私有资源池,并将剩余N-M列所述资源池作为各所述业务模块的共享资源池;其中,M大于0且小于等于N;
相应地,还包括:
加锁模块,用于在利用所述业务模块向所述资源池中添加任务时,若所述资源池为所述共享资源池,则对所述任务进行加锁。
9.一种多线程任务调度设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至6任一项所述的多线程任务调度方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述的多线程任务调度方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911026039.XA CN110795222B (zh) | 2019-10-25 | 2019-10-25 | 一种多线程任务调度方法、装置、设备及可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911026039.XA CN110795222B (zh) | 2019-10-25 | 2019-10-25 | 一种多线程任务调度方法、装置、设备及可读介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110795222A true CN110795222A (zh) | 2020-02-14 |
CN110795222B CN110795222B (zh) | 2022-03-22 |
Family
ID=69441333
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911026039.XA Active CN110795222B (zh) | 2019-10-25 | 2019-10-25 | 一种多线程任务调度方法、装置、设备及可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110795222B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111813579A (zh) * | 2020-07-17 | 2020-10-23 | 济南浪潮数据技术有限公司 | 一种通信方法、装置及可读存储介质,一种文件系统 |
CN112445615A (zh) * | 2020-11-12 | 2021-03-05 | 广州海鹚网络科技有限公司 | 一种线程的调度系统、计算机设备和存储介质 |
CN112650566A (zh) * | 2020-12-21 | 2021-04-13 | 曙光信息产业股份有限公司 | 定时任务处理方法、装置、计算机设备和存储介质 |
CN113010286A (zh) * | 2021-03-12 | 2021-06-22 | 京东数字科技控股股份有限公司 | 并行任务调度方法、装置、计算机设备和存储介质 |
CN113726636A (zh) * | 2021-08-31 | 2021-11-30 | 华云数据控股集团有限公司 | 软件转发设备的数据转发方法、系统及电子设备 |
CN114529301A (zh) * | 2022-02-21 | 2022-05-24 | 山东浪潮通软信息科技有限公司 | 一种凭证过账方法、装置、设备及介质 |
CN115225430A (zh) * | 2022-07-18 | 2022-10-21 | 中安云科科技发展(山东)有限公司 | 一种高性能IPsec VPN CPU负载均衡方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120284725A1 (en) * | 2009-07-28 | 2012-11-08 | Telefonaktiebolaget L M Ericsson (Publ) | Apparatus and Method for Processing Events in a Telecommunications Network |
CN102902573A (zh) * | 2012-09-20 | 2013-01-30 | 北京搜狐新媒体信息技术有限公司 | 一种基于共享资源的任务的处理方法及装置 |
CN103473138A (zh) * | 2013-09-18 | 2013-12-25 | 柳州市博源环科科技有限公司 | 基于线程池的多任务队列调度方法 |
CN104102548A (zh) * | 2014-08-04 | 2014-10-15 | 北京京东尚科信息技术有限公司 | 任务资源调度处理方法和系统 |
US20150324234A1 (en) * | 2013-11-14 | 2015-11-12 | Mediatek Inc. | Task scheduling method and related non-transitory computer readable medium for dispatching task in multi-core processor system based at least partly on distribution of tasks sharing same data and/or accessing same memory address(es) |
CN105607956A (zh) * | 2016-01-06 | 2016-05-25 | 北京京东尚科信息技术有限公司 | 一种计算机中的任务分配方法及系统 |
CN106325980A (zh) * | 2015-06-30 | 2017-01-11 | 中国石油化工股份有限公司 | 一种多线程并发系统 |
CN107515785A (zh) * | 2016-06-16 | 2017-12-26 | 大唐移动通信设备有限公司 | 一种内存管理方法及装置 |
CN109710400A (zh) * | 2018-12-17 | 2019-05-03 | 平安普惠企业管理有限公司 | 线程资源分组的方法及装置 |
-
2019
- 2019-10-25 CN CN201911026039.XA patent/CN110795222B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120284725A1 (en) * | 2009-07-28 | 2012-11-08 | Telefonaktiebolaget L M Ericsson (Publ) | Apparatus and Method for Processing Events in a Telecommunications Network |
CN102902573A (zh) * | 2012-09-20 | 2013-01-30 | 北京搜狐新媒体信息技术有限公司 | 一种基于共享资源的任务的处理方法及装置 |
CN103473138A (zh) * | 2013-09-18 | 2013-12-25 | 柳州市博源环科科技有限公司 | 基于线程池的多任务队列调度方法 |
US20150324234A1 (en) * | 2013-11-14 | 2015-11-12 | Mediatek Inc. | Task scheduling method and related non-transitory computer readable medium for dispatching task in multi-core processor system based at least partly on distribution of tasks sharing same data and/or accessing same memory address(es) |
CN104102548A (zh) * | 2014-08-04 | 2014-10-15 | 北京京东尚科信息技术有限公司 | 任务资源调度处理方法和系统 |
CN106325980A (zh) * | 2015-06-30 | 2017-01-11 | 中国石油化工股份有限公司 | 一种多线程并发系统 |
CN105607956A (zh) * | 2016-01-06 | 2016-05-25 | 北京京东尚科信息技术有限公司 | 一种计算机中的任务分配方法及系统 |
CN107515785A (zh) * | 2016-06-16 | 2017-12-26 | 大唐移动通信设备有限公司 | 一种内存管理方法及装置 |
CN109710400A (zh) * | 2018-12-17 | 2019-05-03 | 平安普惠企业管理有限公司 | 线程资源分组的方法及装置 |
Non-Patent Citations (1)
Title |
---|
李梦盈: "基于动态优先级的云计算任务调度研究", 《万方》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111813579A (zh) * | 2020-07-17 | 2020-10-23 | 济南浪潮数据技术有限公司 | 一种通信方法、装置及可读存储介质,一种文件系统 |
CN112445615A (zh) * | 2020-11-12 | 2021-03-05 | 广州海鹚网络科技有限公司 | 一种线程的调度系统、计算机设备和存储介质 |
CN112650566A (zh) * | 2020-12-21 | 2021-04-13 | 曙光信息产业股份有限公司 | 定时任务处理方法、装置、计算机设备和存储介质 |
CN112650566B (zh) * | 2020-12-21 | 2022-03-22 | 曙光信息产业股份有限公司 | 定时任务处理方法、装置、计算机设备和存储介质 |
CN113010286A (zh) * | 2021-03-12 | 2021-06-22 | 京东数字科技控股股份有限公司 | 并行任务调度方法、装置、计算机设备和存储介质 |
CN113726636A (zh) * | 2021-08-31 | 2021-11-30 | 华云数据控股集团有限公司 | 软件转发设备的数据转发方法、系统及电子设备 |
CN114529301A (zh) * | 2022-02-21 | 2022-05-24 | 山东浪潮通软信息科技有限公司 | 一种凭证过账方法、装置、设备及介质 |
CN115225430A (zh) * | 2022-07-18 | 2022-10-21 | 中安云科科技发展(山东)有限公司 | 一种高性能IPsec VPN CPU负载均衡方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110795222B (zh) | 2022-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110795222B (zh) | 一种多线程任务调度方法、装置、设备及可读介质 | |
Singh et al. | An optimized round robin scheduling algorithm for CPU scheduling | |
CN109582455B (zh) | 多线程任务处理方法、装置及存储介质 | |
Yadav et al. | An improved round robin scheduling algorithm for CPU scheduling | |
Goel et al. | A comparative study of cpu scheduling algorithms | |
US20110202924A1 (en) | Asynchronous Task Execution | |
US9778962B2 (en) | Method for minimizing lock contention among threads when tasks are distributed in multithreaded system and apparatus using the same | |
CN106775977B (zh) | 任务调度方法、装置及系统 | |
US9858115B2 (en) | Task scheduling method for dispatching tasks based on computing power of different processor cores in heterogeneous multi-core processor system and related non-transitory computer readable medium | |
EP3553656A1 (en) | Resource scheduling method and device | |
EP3147785B1 (en) | Task processing method and device | |
CN103748559A (zh) | 利用工作需求反馈在处理器之间进行工作划分的方法和系统 | |
CN109840149B (zh) | 任务调度方法、装置、设备及存储介质 | |
EP3104275A1 (en) | Data processing method, device and system | |
Singh et al. | Analysis and comparison of CPU scheduling algorithms | |
CN106775975B (zh) | 进程调度方法及装置 | |
Mody et al. | Smart round robin CPU scheduling algorithm for operating systems | |
Ramakrishna et al. | Efficient round robin CPU scheduling algorithm for operating systems | |
CN117519930A (zh) | 批量任务的执行方法、装置及电子设备 | |
CN110908794B (zh) | 基于任务窃取算法的任务窃取方法及系统 | |
CN116302420A (zh) | 并发调度方法、装置、计算机设备及计算机可读存储介质 | |
EP3792757A1 (en) | Method, apparatus, device, and storage medium for performing processing task | |
CN109086128B (zh) | 任务调度方法及装置 | |
CN114896295B (zh) | 大数据场景下的数据脱敏方法、脱敏装置及脱敏系统 | |
CN112395063B (zh) | 一种动态多线程调度方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |