CN115599523A - 一种任务处理方法、装置、电子设备及存储介质 - Google Patents
一种任务处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115599523A CN115599523A CN202211323034.5A CN202211323034A CN115599523A CN 115599523 A CN115599523 A CN 115599523A CN 202211323034 A CN202211323034 A CN 202211323034A CN 115599523 A CN115599523 A CN 115599523A
- Authority
- CN
- China
- Prior art keywords
- target
- task
- thread
- tasks
- target task
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title abstract description 25
- 238000012545 processing Methods 0.000 claims abstract description 145
- 238000000034 method Methods 0.000 claims abstract description 87
- 230000008569 process Effects 0.000 claims abstract description 52
- 230000000903 blocking effect Effects 0.000 claims description 19
- 238000004891 communication Methods 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 14
- 238000012423 maintenance Methods 0.000 abstract description 8
- 230000008859 change Effects 0.000 description 13
- 230000004044 response Effects 0.000 description 9
- 230000009471 action Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
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
本发明实施例提供了一种任务处理方法、装置、电子设备及存储介质,该任务处理方法包括:确定各个目标任务,并确定指定数量个处于空闲状态的目标线程;获取指定数量个目标任务,分别分配给每个目标线程,以使每个目标线程处理所接收到的目标任务;在存在处理完所接收到的目标任务且恢复空闲状态的目标线程时,为该目标线程分配一个未分配的目标任务,以使该目标线程处理所接收到的目标任务,直到不存在未分配的目标任务。基于本发明实施例提供的方法,可以实现任务的自动分配,从而节约人工成本和运维成本。
Description
技术领域
本发明涉及数据处理技术领域,特别是涉及一种任务处理方法、装置、电子设备及存储介质。
背景技术
对于各个应用程序,一个HTTP(HyperText Transfer Protocol,超文本传输协议)请求通常伴随着多个任务逻辑之间没有耦合的待处理任务。对此,相关技术方案是启用多个线程,把这些待处理任务分配到不同的线程中进行并发处理。
其中,技术人员可以根据每个任务耗时情况,确定任务的分配方式,使每个线程的任务处理耗时尽量平均,从而实现请求的快速响应。并且,随着应用程序的升级改进,技术人员可能会改变一些任务的实现逻辑,进而,这些任务的耗时也可能随之发生变化。对此,技术人员还需要根据改变后的任务的耗时变化,再次调整任务的分配方式。
以上可见,现有技术方案中的任务分配方法,将耗费较多的人工成本和运维成本。
发明内容
本发明实施例的目的在于提供一种任务处理方法、装置、电子设备及存储介质,以实现任务的自动分配,从而节约人工成本和运维成本。具体技术方案如下:
在本发明实施的第一方面,首先提供了一种任务处理方法,所述方法包括:
确定各个目标任务,并确定指定数量个处于空闲状态的目标线程;
获取指定数量个目标任务,分别分配给每个目标线程,以使每个目标线程处理所接收到的目标任务;
在存在处理完所接收到的目标任务且恢复空闲状态的目标线程时,为该目标线程分配一个未分配的目标任务,以使该目标线程处理所接收到的目标任务,直到不存在所述未分配的目标任务。
可选的,一种具体实现方式中,在所述获取指定数量个目标任务,分别分配给每个目标线程之前,所述方法还包括:
确定所述各个目标任务的排列顺序;其中,所述排列顺序用于表征所述各个目标任务按照预计耗时由大到小进行排列的顺序;
所述获取指定数量个目标任务,分别分配给每个目标线程,包括:
获取排列在前指定数量位的目标任务,分别分配给每个目标线程;
所述在存在处理完所接收到的目标任务且恢复空闲状态的目标线程时,为该目标线程分配一个未分配的目标任务,包括:
在存在处理完所接收到的目标任务且恢复空闲状态的目标线程时,将未分配的目标任务中,排列在第一位的目标任务分配给该目标线程。
可选的,一种具体实现方式中,所述确定所述各个目标任务的排列顺序,包括:
根据每个目标任务的历史耗时,确定该目标任务的预计耗时,并按照所确定的预计耗时由大到小的顺序,排列各个目标任务,得到所述各个目标任务的排列顺序。
可选的,一种具体实现方式中,在所述根据每个目标任务的历史耗时,确定该目标任务的预计耗时之前,所述方法还包括:
确定各个目标任务中,存在历史耗时的各个第一任务,以及不存在历史耗时的各个第二任务;
所述根据每个目标任务的历史耗时,确定该目标任务的预计耗时,并按照所确定的预计耗时由大到小的顺序,排列各个目标任务,得到所述各个目标任务的排列顺序,包括:
根据每个第一任务的历史耗时,确定该第一任务的预计耗时,并按照所确定的预计耗时由大到小的顺序,排列各个第一任务;
将各个第二任务均排列在全部第一任务之前,得到所述各个目标任务的排列顺序。
可选的,一种具体实现方式中,所述方法还包括:
针对每个目标任务,记录处理该目标任务的实际耗时,作为再次处理该目标任务时,该目标任务的历史耗时。
可选的,一种具体实现方式中,所述根据每个目标任务的历史耗时,确定该目标任务的预计耗时,包括:
根据该目标任务在指定时间段内的耗时记录,确定该目标任务的预计耗时;或者,
根据该目标任务在当前时刻之前,且距离当前时刻最近的指定次数的耗时记录,确定该目标任务的预计耗时。
可选的,一种具体实现方式中,在获取排列在前指定数量位的目标任务,分别分配给每个目标线程之前,所述方法还包括:
按照所述排列顺序将各个目标任务依次放入预设的阻塞队列;
所述获取排列在前指定数量位的目标任务,分别分配给每个目标线程,包括:
从所述阻塞队列中取出排列在前指定数量位的目标任务,分别分配给每个目标线程;
所述将未处理的目标任务中,排列在第一位的目标任务分配给该目标线程,包括:
将所述阻塞队列中,排列在第一位的目标任务分配给该目标线程。
可选的,一种具体实现方式中,所述确定指定数量个处于空闲状态的目标线程,包括:
读取目标线程池的配置信息;其中,所述配置信息包括:预设的每次任务处理的最大耗时和所述目标线程池内总线程数量,以及所述目标线程池中的每个线程处理各类任务的平均耗时;
基于所述配置信息以及处理各个目标任务的预计时长,确定指定数量;
在所述目标线程池中,确定所述指定数量个处于空闲状态的目标线程。
在本发明实施的第二方面,还提供了一种任务处理装置,所述装置包括:
任务确定模块,用于确定各个目标任务,并确定指定数量个处于空闲状态的目标线程;
第一任务分配模块,用于获取指定数量个目标任务,分别分配给每个目标线程,以使每个目标线程处理所接收到的目标任务;
第二任务分配模块,用于在存在处理完所接收到的目标任务且恢复空闲状态的目标线程时,为该目标线程分配一个未分配的目标任务,以使该目标线程处理所接收到的目标任务,直到不存在所述未分配的目标任务。
可选的,一种具体实现方式中,所述装置还包括:
顺序确定模块,用于确定所述各个目标任务的排列顺序;其中,所述排列顺序用于表征所述各个目标任务按照预计耗时由大到小进行排列的顺序;
所述第一任务分配模块,具体用于获取排列在前指定数量位的目标任务,分别分配给每个目标线程;
所述第二任务分配模块,具体用于在存在处理完所接收到的目标任务且恢复空闲状态的目标线程时,将未分配的目标任务中,排列在第一位的目标任务分配给该目标线程。
可选的,一种具体实现方式中,所述顺序确定模块,具体用于根据每个目标任务的历史耗时,确定该目标任务的预计耗时,并按照所确定的预计耗时由大到小的顺序,排列各个目标任务,得到所述各个目标任务的排列顺序。
可选的,一种具体实现方式中,所述装置还包括:
任务确定模块,用于确定各个目标任务中,存在历史耗时的各个第一任务,以及不存在历史耗时的各个第二任务;
所述顺序确定模块,具体用于根据每个第一任务的历史耗时,确定该第一任务的预计耗时,并按照所确定的预计耗时由大到小的顺序,排列各个第一任务;
将各个第二任务均排列在全部第一任务之前,得到所述各个目标任务的排列顺序。
可选的,一种具体实现方式中,所述装置还包括:
耗时记录模块,用于针对每个目标任务,记录处理该目标任务的实际耗时,作为再次处理该目标任务时,该目标任务的历史耗时。
可选的,一种具体实现方式中,所述顺序确定模块,具体用于根据该目标任务在指定时间段内的耗时记录,确定该目标任务的预计耗时;或者,
根据该目标任务在当前时刻之前,且距离当前时刻最近的指定次数的耗时记录,确定该目标任务的预计耗时。
可选的,一种具体实现方式中,所述装置还包括:
队列生成模块,用于按照所述排列顺序将各个目标任务依次放入预设的阻塞队列;
所述第一任务分配模块,具体用于从所述阻塞队列中取出排列在前指定数量位的目标任务,分别分配给每个目标线程;
所述第二任务分配模块,具体用于将所述阻塞队列中,排列在第一位的目标任务分配给该目标线程。
可选的,一种具体实现方式中,所述任务确定模块,具体用于:
读取目标线程池的配置信息;其中,所述配置信息包括:预设的每次任务处理的最大耗时和所述目标线程池内总线程数量,以及所述目标线程池中的每个线程处理各类任务的平均耗时;
基于所述配置信息以及处理各个目标任务的预计时长,确定指定数量;
在所述目标线程池中,确定所述指定数量个处于空闲状态的目标线程。
在本发明实施的又一方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述任一所述的任务处理方法。
在本发明实施的又一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一所述的任务处理方法。
在本发明实施的又一方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的任务处理方法。
本发明实施例有益效果:
以上可见,应用本发明实施例提供的方案,可以首先确定各个目标任务以及指定数量个处于空闲状态的目标线程;然后获取指定数量个目标任务,分别分配给每个目标线程;每个目标线程在接收到目标任务后,便可以对所接收到的目标任务进行处理;由于各个目标任务的耗时可以不同,各个目标线程处理完所接收到的目标任务的时间可以有一个先后顺序;于是,最先完成所接收到的目标任务的目标线程可以最先恢复空闲状态;进而,在存在处理完所接收到的目标任务且恢复空闲状态的目标线程时,便可以为该目标线程分配一个未分配的目标任务;该目标线程在接收到目标任务后,便可以对所接收到的目标任务进行处理;这样,每当存在处理完所接收到的目标任务且恢复空闲状态的目标线程时,便可以为该目标线程分配一个未分配的目标任务,直到不存在未分配的目标任务。
基于此,应用本发明实施例提供的方案,可以自动地将各个目标任务分配给各个目标线程,并使每个线程的任务处理耗时平尽量平均,从而实现请求的快速响应。因此,本发明实施例提供的方案可以实现任务的自动分配,节约人工成本和运维成本。另外,相较于现有技术中,由技术人员根据每个任务的耗时情况,将任务与线程之间的分配关系全部确定好,使每个线程的任务处理耗时尽量平均,本发明实施例提供的方案每次只给目标线程分配一个目标任务,在目标线程完成所接收到的目标任务并恢复空闲状态后,再为该目标线程分配一个未分配的目标任务。因此,本发明实施例提供的方案的任务分配的灵活性较高,部分目标任务单次耗时发生变化对目标任务总耗时的影响较小。
当然,实施本申请的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本发明实施例中提供的一种任务处理方法的第一种流程示意图;
图2为本发明实施例中提供的一种任务处理方法的第二种流程示意图;
图3为本发明实施例中提供的一种任务处理方法的第三种流程示意图;
图4为本发明实施例中提供的一种任务处理方法的第四种流程示意图;
图5为本发明实施例中提供的一种任务处理方法的第五种流程示意图;
图6为本发明实施例中提供的一种任务处理装置的一种结构示意图;
图7为本发明实施例中提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员基于本申请所获得的所有其他实施例,都属于本发明保护的范围。
对于各个应用程序,一个HTTP请求通常伴随着多个任务逻辑之间没有耦合的待处理任务。对此,相关技术方案是启用多个线程,把这些待处理任务分配到不同的线程中进行并发处理。其中,技术人员可以根据每个任务耗时情况,确定任务的分配方式,使每个线程的任务处理耗时平尽量平均,从而实现请求的快速响应。并且,随着应用程序的升级改进,技术人员可能会改变一些任务的实现逻辑,进而,这些任务的耗时也可能随之发生变化。对此,技术人员还需要根据改变后的任务的耗时变化,再次调整任务的分配方式。以上可见,现有技术方案中的任务分配方法,将耗费较多的时间和人力。
为了解决上述问题,本发明实施例提供了一种任务处理方法。
其中,该方法可以适用于各种并发处理多个任务逻辑之间没有耦合的待处理任务的应用场景。例如,批量下载多个文件,某图片资源网站针对一个http请求需获取并显示多张图片等。对此,本发明实施例不做具体限定。
此外,本发明实施例的执行主体可以是各类可以启用多个线程对任务进行并发处理的电子设备,例如,手机、笔记本电脑、台式电脑等。对此,本发明实施例不做具体限定,以下简称电子设备。
本发明实施例提供的一种任务处理方法可以包括如下步骤:
确定各个目标任务,并确定指定数量个处于空闲状态的目标线程;
获取指定数量个目标任务,分别分配给每个目标线程,以使每个目标线程处理所接收到的目标任务;
在存在处理完所接收到的目标任务且恢复空闲状态的目标线程时,为该目标线程分配一个未分配的目标任务,以使该目标线程处理所接收到的目标任务,直到不存在所述未分配的目标任务。
以上可见,应用本发明实施例提供的方案,可以首先确定各个目标任务以及指定数量个处于空闲状态的目标线程;然后获取指定数量个目标任务,分别分配给每个目标线程;每个目标线程在接收到目标任务后,便可以对所接收到的目标任务进行处理;由于各个目标任务的耗时可以不同,各个目标线程处理完所接收到的目标任务的时间可以有一个先后顺序;于是,最先完成所接收到的目标任务的目标线程可以最先恢复空闲状态;进而,在存在处理完所接收到的目标任务且恢复空闲状态的目标线程时,便可以为该目标线程分配一个未分配的目标任务;该目标线程在接收到目标任务后,便可以对所接收到的目标任务进行处理;这样,每当存在处理完所接收到的目标任务且恢复空闲状态的目标线程时,便可以为该目标线程分配一个未分配的目标任务,直到不存在未分配的目标任务。
基于此,应用本发明实施例提供的方案,可以自动地将各个目标任务分配给各个目标线程,并使每个线程的任务处理耗时平尽量平均,从而实现请求的快速响应。因此,本发明实施例提供的方案可以实现任务的自动分配,节约人工成本和运维成本。另外,相较于现有技术中,由技术人员根据每个任务的耗时情况,将任务与线程之间的分配关系全部确定好,使每个线程的任务处理耗时尽量平均,本发明实施例提供的方案每次只给目标线程分配一个目标任务,在目标线程完成所接收到的目标任务并恢复空闲状态后,再为该目标线程分配一个未分配的目标任务。因此,本发明实施例提供的方案的任务分配的灵活性较高,部分目标任务单次耗时发生变化对目标任务总耗时的影响较小。
下面,结合附图,对本发明实施例提供的一种任务处理方法进行具体说明。
图1为本发明实施例提供的一种任务处理方法的流程示意图,如图1所示,该方法可以包括如下步骤S101-S103。
S101:确定各个目标任务,并确定指定数量个处于空闲状态的目标线程。
在进行任务处理的过程中,可以首先确定各个待处理的目标任务。
可选的,一种具体实现方式中,可以在获取到关于任务处理的目标请求后,基于该目标请求确定各个待处理的目标任务。
示例性的,上述目标请求可以是HTTP请求,进而,可选的,一种具体实现方式中,上述确定各个目标任务可以包括:获取目标HTTP请求,并解析所述目标HTTP请求,得到各个目标任务。
另外,为了使后续任务处理过程中,各个目标任务的调用和访问更加简单,可选的,一种具体实现方式中,上述确定各个目标任务包括:接收各个待处理任务,将每个待处理任务封装成暴露相同接口的类,作为各个目标任务。
基于此,在后续任务处理过程中,便可以不考虑目标任务的具体内容,只通过上述接口就可以实现对各个目标任务的调用和访问。
对于目标任务的处理,需要线程来执行。因此,在确定了各个目标任务后,便可以确定多个处于空闲状态的目标线程,用于处理上述各个目标任务。
线程在处理任务时存在CPU(Central Processing Unit,中央处理器)计算过程和I/O(Input/Output,输入/输出)操作过程。线程在I/O操作时是不占用CPU的。因此,如果所确定的处于空闲状态的目标线程的数量如果过少,可能导致CPU的利用率较低,任务处理速度较慢。由于在处理多线程并发任务的时候,处理器会给每个线程分配CPU时间片,线程只在分配的时间片内占用处理器执行任务,当一个线程分配的时间片用完了,或者自身原因被迫暂停运行的时候,就会有另外一个线程来占用这个处理器,这种一个线程让出处理器使用权,另外一个线程获取处理器使用权的过程就叫做上下文切换。因此,如果所确定的处于空闲状态的目标线程的数量过多,就可能导致任务处理过程中线程的上下文切换过多。由于上下文切换也会耗费一定的时间和计算资源,如果线程的上下文切换过多,可能会导致任务处理效率降低并且耗费更多的计算资源。
因此,在确定处于空闲状态的目标线程时,还要考虑所确定的处于空闲状态的目标线程的数量。
由于不同型号的电子设备的硬件配置不同,数据处理能力也不同,进而处理同一任务的耗时可能不同。因此,本领域技术人员可以根据不同电子设备的数据处理能力,为不同电子设备分别预设每次任务处理的最大耗时和目标线程池内总线程数量,以及目标线程池中的每个线程处理各类任务的平均耗时等目标线程池的配置信息,并且上述目标线程池的配置信息可以同步到处理上述目标任务的电子设备中,对于执行本发明实施例提供的方案的电子设备而言,其也可以存储有该电子设备对应的目标线程池的配置信息。
基于此,可选的,一种具体实现方式中,上述步骤S101中,确定指定数量个处于空闲状态的目标线程,可以包括如下步骤1-3。
步骤1:读取目标线程池的配置信息。
其中,配置信息包括:预设的每次任务处理的最大耗时和目标线程池内总线程数量,以及目标线程池中的每个线程处理各类任务的平均耗时。
可选的,一种具体实现方式中,目标线程池内最小线程数=预先设置的线程的平均每秒处理任务次数*预先设置的线程的平均每次任务处理耗时*预先设置的线程的平均每次任务处理启动线程数。其中,预先设置的线程的平均每秒任务处理次数、预先设置的线程的平均每次任务处理耗时以及预先设置的线程的平均每次任务处理启动线程数可以根据该电子设备或与该电子设备同型号的电子设备上的历史任务处理情况进行预计。
示例性的,若预计上述预先设置的线程平均每秒处理100次任务,平均每次任务处理耗时10ms,平均每次任务处理启动5个线程,那么目标线程池内最小线程数就是100*0.01*5=5,也就是目标线程池内最少满足5个线程即可。
然而,在实际任务处理过程中,预先设置的线程的每秒任务处理次数可能会大于预先设置的线程的平均每秒任务处理次数,预先设置的线程的每次任务处理耗时可能会大于预先设置的线程的平均每次任务处理耗时,预先设置的线程的每次任务处理启动线程数也可能会大于预先设置的线程的平均每次任务处理启动线程数。因此,为了适应实际任务处理过程的不确定性,通常会将目标线程池内总线程数量设置为目标线程池内最小线程数的2-3倍。
步骤2:基于配置信息以及处理各个目标任务的预计时长,确定指定数量。
步骤3:在目标线程池中,确定指定数量个处于空闲状态的目标线程。
在读取了目标线程池的配置信息后,便可以基于预设的每次任务处理的最大耗时、目标线程池内总线程数量以及目标线程池中的每个线程处理各类任务的平均耗时等配置信息以及处理各个目标任务的预计时长,确定用于处理目标任务的目标线程的指定数量,进而在预设线程池中,确定指定数量个处于空闲状态的目标线程。
可选的,一种具体实现方式中,上述指定数量=目标任务数量*目标线程池中的每个线程处理各类任务的平均耗时/每次任务处理的最大耗时。
示例性的,如果某次任务处理的目标任务数量为10,目标线程池中的每个线程处理各类任务的平均耗时5ms,每次任务处理的最大耗时为10ms,那么该次任务处理可以确定5个目标线程用于处理目标任务。
可选的,一种具体实现方式中,上述指定数量=目标任务数量*预期平均每个目标任务耗时/每次任务处理的最大耗时。其中,预期平均每个目标任务耗时可以根据上述处理各个目标任务的预计时长以及目标任务数量进行确定。
示例性的,如果某次任务处理的目标任务数量为10,根据处理各个目标任务的预计时长以及目标任务数量得到预期平均每个目标任务耗时为5ms,每次任务处理的最大耗时为10ms,那么该次任务处理可以确定5个目标线程用于处理目标任务。如果下一次任务处理时,平均每个目标任务耗时由5ms增加到10ms,那么为了满足每次任务处理的最大耗时为10ms,下一次任务处理可以确定10个目标线程用于处理目标任务。因此,本具体实现方式中,上述指定数量,即所确定的用于处理目标任务的处于空闲状态的目标线程的数量可以随着预期平均每个目标任务耗时的变化而改变。
基于此,通过目标线程池的配置信息以及处理各个目标任务的预计时长确定用于处理目标任务的目标线程的数量,可以使所确定的目标线程的数量不至于过大或是过小。从而在实现任务处理耗时较小的同时,减少上下文切换,进而降低计算资源的消耗。
S102:获取指定数量个目标任务,分别分配给每个目标线程,以使每个目标线程处理所接收到的目标任务。
S103:在存在处理完所接收到的目标任务且恢复空闲状态的目标线程时,为该目标线程分配一个未分配的目标任务,以使该目标线程处理所接收到的目标任务,直到不存在未分配的目标任务。
在确定了各个目标任务,以及用于处理上述各个目标任务的指定数量个处于空闲状态的目标线程后,便可以先获取指定数量个目标任务,分别分配给每个目标线程;每个目标线程在接收到目标任务后,便可以对所接收到的目标任务进行处理;由于各个目标任务的耗时可以不同,各个目标线程处理完所接收到的目标任务的时间可以有一个先后顺序;于是,最先完成所接收到的目标任务的目标线程可以最先恢复空闲状态;进而,在存在处理完所接收到的目标任务且恢复空闲状态的目标线程时,便可以为该目标线程分配一个未分配的目标任务;该目标线程在接收到目标任务后,便可以对所接收到的目标任务进行处理;这样,每当存在处理完所接收到的目标任务且恢复空闲状态的目标线程时,便可以为该目标线程分配一个未分配的目标任务,直到不存在未分配的目标任务。
基于此,应用本发明实施例提供的方案,可以自动地将各个目标任务分配给各个目标线程,并使每个线程的任务处理耗时平尽量平均,从而实现请求的快速响应。因此,本发明实施例提供的方案可以实现任务的自动分配,节约人工成本和运维成本。另外,相较于现有技术中,由技术人员根据每个任务的耗时情况,将任务与线程之间的分配关系全部确定好,使每个线程的任务处理耗时尽量平均,本发明实施例提供的方案每次只给目标线程分配一个目标任务,在目标线程完成所接收到的目标任务并恢复空闲状态后,再为该目标线程分配一个未分配的目标任务。因此,本发明实施例提供的方案的任务分配的灵活性较高,部分目标任务单次耗时发生变化对目标任务总耗时的影响较小。
在本发明所提供的任务处理方法中,在目标任务处理的过程中,每个目标线程在处理完所接受到的目标任务并恢复空闲状态时,可以被即刻分配一个未分配的目标任务,直到不存在未分配的待分配任务。
因此,如果在某个时刻,存在m个同时恢复空闲状态的目标线程,且存在n个未分配的目标任务,其中m和n均为不小于1的整数。那么,当m不大于n时,可以为该m个目标线程中的每个目标线程分别分配一个未分配的目标任务;当m大于n时,可以从该m个目标线程中选择n个目标线程,然后为该n个目标线程中的每个目标线程分别分配一个未分配的目标任务。
可见,分配最后一个未分配的目标任务的情形有两种:
第一种情形,在同一时刻,存在p个同时恢复空闲状态的目标线程,且存在p个未分配的目标任务,其中,p为不小于1的整数。该情形下,可以将p个未分配的目标任务分别分配给该p个同时恢复空闲状态的目标线程,使该p个目标线程中的每个目标线程接收一个未分配的目标任务,且不再存在未分配的目标任务。
第二种情形,在同一时刻,存在p个同时恢复空闲状态的目标线程,且存在q个未分配的目标任务,其中,q为小于p的正整数。该情形下,可以从该p个同时恢复空闲状态的目标线程中选择q个目标线程,然后将q个未分配的目标任务分别分配给所选择的q个目标线程,使该q个目标线程中的每个目标线程接收一个未分配的目标任务,且不再存在未分配的目标任务。
进而,在该第二种情形下,上述p个同时恢复空闲状态的目标线程中,存在(p-q)个目标线程将继续处于空闲状态,直至本次任务处理中的全部目标任务处理结束。
以上可见,在分配完最后一个未分配的目标任务后,针对每个目标线程,该目标线程正在处理所分配到的最后一个目标任务,或者,该目标线程处于空闲状态。也就是说,在分配完最后一个未分配的目标任务后,每个目标线程所分配到的最后一个目标任务的处理进度均属于[0,100%]。进而,从分配完最后一个未分配的目标任务开始,到本次任务处理中的全部目标任务处理结束,之间的时长不会超过各个目标线程所处理的最后一个目标任务中耗时最大的目标任务的耗时。从而,任何两个目标线程的任务处理耗时差值都不会超过各个目标线程所处理的最后一个目标任务中耗时最大的目标任务的耗时。
可见,各个目标线程被分配的最后一个目标任务的耗时越小,各个目标线程的任务处理耗时就可以越趋向于平均。因此,为了使每个线程的任务处理耗时更加平均,使任务处理的总耗时更小,可以先将耗时较大的目标任务分配给各个目标线程,然后再分配耗时较小的目标任务。
基于此,可选的,一种具体实现方式中,如图2所示,本发明实施例所提供的任务处理方法还包括如下步骤S201。
S201:确定各个目标任务的排列顺序。
其中,排列顺序用于表征各个目标任务按照预计耗时由大到小进行排列的顺序。
上述步骤S102:获取指定数量个目标任务,分别分配给每个目标线程,以使每个目标线程处理所接收到的目标任务,可以包括如下步骤S202。
S202:获取排列在前指定数量位的目标任务,分别分配给每个目标线程,以使每个目标线程处理所接收到的目标任务。
上述步骤S103:在存在处理完所接收到的目标任务且恢复空闲状态的目标线程时,为该目标线程分配一个未分配的目标任务,以使该目标线程处理所接收到的目标任务,直到不存在未分配的目标任务,可以包括如下步骤S203。
S203:在存在处理完所接收到的目标任务且恢复空闲状态的目标线程时,将未分配的目标任务中,排列在第一位的目标任务分配给该目标线程,以使该目标线程处理所接收到的目标任务,直到不存在所述未分配的目标任务。
示例性的,将5个目标任务分配给2个目标线程进行处理,其中,5个目标任务的耗时分别为1ms、2ms、3ms、4ms和5ms,2个目标线程分别为线程1和线程2。如果先将耗时较小的目标任务分配给各个目标线程,然后再分配耗时较大的目标任务,也就是先将1ms的目标任务分配给线程1,将2ms的目标任务分配给线程2,那么在1ms时,线程1完成该1ms的目标任务,将3ms的目标任务分配给线程1;在2ms时,线程2完成该2ms的目标任务,将4ms的目标任务分配给线程2;在4ms时,线程1完成该3ms的目标任务,将5ms的目标任务分配给线程1;在6ms时,线程1完成该4ms的目标任务;在9ms时,线程2完成该5ms的目标任务;因此,采用先将耗时较小的目标任务分配给各个目标线程,然后再分配耗时较大的目标任务的分配方式,完成上述5个目标任务的耗时为9ms。然而,如果先将耗时较大的目标任务分配给各个目标线程,然后再分配耗时较小的目标任务,也就是先将5ms的目标任务分配给线程1,将4ms的目标任务分配给线程2,那么在4ms时,线程2完成该4ms的目标任务,将3ms的目标任务分配给线程2;在5ms时,线程1完成该5ms的目标任务,将2ms的目标任务分配给线程1;在7ms时,线程1完成该2ms的目标任务,线程2完成该3ms的目标任务,将1ms的目标任务分配给线程1;在8ms时,线程1完成该1ms的目标任务;因此,采用先将耗时较大的目标任务分配给各个目标线程,然后再分配耗时较小的目标任务的分配方式,完成上述5个目标任务的耗时为8ms。
由上可见,在将各个目标任务分配给各个目标线程之前,可以先确定各个目标任务的排列顺序,且该排列顺序用于表征各个目标任务按照预计耗时由大到小进行排列的顺序。
可选的,一种具体实现方式中,可以基于目标任务的任务内容确定目标任务的预计耗时,然后按照预计耗时由大到小的顺序确定各个目标任务的排列顺序。
可选的,一种具体实现方式中,可以获取开发人员在对目标任务进行测试时,目标任务的耗时情况,然后根据该耗时情况确定目标任务的预计耗时,再按照预计耗时由大到小的顺序确定各个目标任务的排列顺序。
在确定了各个目标任务的排列顺序后,可以先将排列在前指定数量位的目标任务,分别分配给每个目标线程,进而,每个目标线程在接收到目标任务后,便可以对所接收到的目标任务进行处理。由于各个目标任务的耗时可以不同,各个目标线程处理完所接收到的目标任务的时间可以有一个先后顺序;于是,最先完成所接收到的目标任务的目标线程可以最先恢复空闲状态;进而,在存在处理完所接收到的目标任务且恢复空闲状态的目标线程时,便可以将未处理的目标任务中,排列在第一位的目标任务分配给该目标线程;该目标线程在接收到目标任务后,便可以对所接收到的目标任务进行处理;这样,每当存在处理完所接收到的目标任务且恢复空闲状态的目标线程时,便可以将未分配的目标任务中,排列在第一位的目标任务分配给该目标线程,直到不存在未分配的目标任务。
示例性的,在确定了各个目标任务的排列顺序后,各个目标任务的排列为:任务1(10ms)、任务2(9ms)、任务3(8ms)、任务4(7ms)、任务5(6ms)、任务6(5ms)、任务7(3ms),所确定的目标线程为:线程A和线程B。那么,可以先将排列在前两位的目标任务,即任务1和任务2,分别分配给处于空闲状态的目标线程:线程A和线程B。线程A在接收到任务1后,开始对任务1进行处理;线程B在接收到任务2后,开始对任务2进行处理。
将线程A和线程B开始处理目标任务的时刻记为0ms,由于任务1的耗时是10ms,任务2的耗时是9ms,因此在9ms时,线程B会较线程A先完成目标任务并恢复空闲状态,然后,便可以将未分配的目标任务中,排列在第一位的目标任务3分配给处于空闲状态的目标线程,即线程B。在10ms时,线程A处理完任务1并恢复空闲状态,进而将目前未分配的目标任务中,排列在第一位的目标任务4分配给线程A。在17ms时,线程A处理完任务4,线程B处理完任务3,线程A和线程B同时恢复空闲状态。然后,便可以将目前未分配的目标任务中,排列在前两位的目标任务,即任务5和任务6分别分配给线程A和线程B。在22ms时,线程B处理完任务6,恢复空闲状态,进而将目前未分配的目标任务中,排列在第一位的任务7分配给线程B。至此,不存在未分配的目标任务,任务分配结束。在23ms时,线程A处理完任务5恢复空闲状态;在25ms时,线程B处理完任务7恢复空闲状态。至此,所有目标任务处理完成,此次任务处理结束。
基于此,应用本发明实施例提供的方案,可以根据各个目标任务的预计耗时大小,自动地将各个目标任务分配给各个目标线程,使每个线程的任务处理耗时更加平均,从而实现请求的快速响应。因此,本发明实施例提供的方案可以实现任务的自动分配,节约人工成本和运维成本。另外,相较于现有技术中,由技术人员根据每个任务的耗时情况,将任务与线程之间的分配关系全部确定好,使每个线程的任务处理耗时尽量平均,本发明实施例提供的方案每次只给目标线程分配一个目标任务,在目标线程完成所接收到的目标任务并恢复空闲状态后,再将未分配的目标任务中,排列在第一位的目标任务分配给处于空闲状态的目标线程。因此,本发明实施例提供的方案的任务分配的灵活性较高,部分目标任务单次耗时发生变化对目标任务总耗时的影响较小。
可选的,一种具体实现方式中,上述步骤S201:确定各个目标任务的排列顺序,可以包括如下步骤4。
步骤4:根据每个目标任务的历史耗时,确定该目标任务的预计耗时,并按照所确定的预计耗时由大到小的顺序,排列各个目标任务,得到各个目标任务的排列顺序。
由于不同设备上,同一目标任务的耗时可能是不同的,这种不同也可能影响每个目标线程所处理的目标任务的总耗时,使得各个目标线程所处理的目标任务的总耗时不够平均,目标任务的分配效果不够好,进而可能降低请求的响应速度。因此,针对每个目标任务,可以根据该目标任务在目标设备上的历史耗时,确定该目标任务的预计耗时,从而使该目标任务的预计耗时更接近于该目标任务的实际耗时,进而提升目标任务的分配效果,提高请求的响应速度。
然而,部分目标任务可能是第一次被处理,因此,该部分目标任务并不存在历史耗时记录。基于部分目标任务不存在历史耗时的情况,可选的,一种具体实现方式中,如图3所示,上述步骤S201:确定各个目标任务的排列顺序,可以包括如下子步骤S301-S303。
S301:确定各个目标任务中,存在历史耗时的各个第一任务,以及不存在历史耗时的各个第二任务。
S302:根据每个第一任务的历史耗时,确定该第一任务的预计耗时,并按照所确定的预计耗时由大到小的顺序,排列各个第一任务。
其中,可以根据该第一任务在指定时间段内的耗时记录,确定该第一任务的预计耗时;或者,根据该第一任务在当前时刻之前,且距离当前时刻最近的指定次数的耗时记录,确定该第一任务的预计耗时。
可选的,可以根据该第一任务在当前时刻之前,且距离当前时刻最近的指定时间段内的耗时记录,或者,根据该第一任务在当前时刻之前,且距离当前时刻最近的指定次数的耗时记录,计算该第一任务的平均耗时,作为该第一任务的预计耗时。
示例性的,该第一任务在最近30min内的耗时记录分别为10ms、9.5ms和10.5ms,计算得到该第一任务在指定时间段内的平均耗时为10ms,进而,将该第一任务的预计耗时确定为10ms。
示例性的,该第一任务在当前时刻之前,且距离当前时刻最近的2次耗时记录分别为9ms和10ms,根据该两次耗时记录计算得到该第一任务的平均耗时为9.5ms,进而,将该第一任务的预计耗时确定为9.5ms。
基于此,可以实时保持确定预计耗时所依据的耗时纪录是最新的耗时纪录,进而,如果在某一时刻,技术人员改变了该第一任务的实现逻辑,导致该第一任务的耗时发生变化,该第一任务的预计耗时也会随着耗时记录的变化而随之变化,从而可以使任务分配过程可以随着任务的实现逻辑的改变而自动调整。
S303:将各个第二任务均排列在全部第一任务之前,得到各个目标任务的排列顺序。
其中,各个第二任务的排列顺序可以是随机的,也可以是基于某种方式确定的,对此本发明实施例不做具体限定。
在前面的步骤中,对于各个有历史耗时的第一任务,可以根据这些第一任务的历史耗时对这些第一任务进行排序,然而,对于各个不存在历史耗时的各个第二任务,也就无法根据历史耗时对其进行排序。
根据数学知识可以推算出,在将多个耗时不完全相同的目标任务分配给多个目标线程进行处理时,耗时较长的目标任务对目标线程的耗时影响较大,而耗时较小的目标任务对目标线程的耗时影响较小。并且,耗时较小的目标任务,在通过调整目标任务分配以调整目标线程耗时时,调整的灵活性较大,而目标线程耗时是否平均,可以通过目标线程结束最后一个目标任务时,所耗费的时间进行确定,从而,将耗时较小的目标任务排列在后面分配,可以更灵活地调整线程任务处理后面阶段的耗时,降低耗时较大的目标任务在后续处理时,对于线程耗时调整的难度。
而由于不存在历史耗时的各个第二任务的实际耗时的大小具有很大的不确定性,因此,优先处理各个第二任务,可以给处理存在历史耗时的各个第一任务留出较大的线程耗时调整空间,从而尽可能提高目标线程耗时的平均程度。
示例性的,根据上述步骤S302得到各个第一任务的排列顺序为:任务a、任务b、任务c、任务d,上述步骤S301确定了两个第二任务:任务e和任务f。则最终得到的各个目标任务的排列顺序可以为:任务e、任务f、任务a、任务b、任务c、任务d。
可选的,可能所有目标任务都不存在历史耗时,也就是所有目标任务均被确定为第二任务。这种情况下,可以默认各个目标任务耗时相同,对各个目标任务的排列顺序不做具体限定。
可选的,一种具体实现方式中,目标任务的历史耗时可以是之前处理完目标任务所记录的目标任务的耗时。因此,为了基于历史耗时确定各个目标任务的排列顺序,可以在处理完目标任务后,记录目标任务的耗时。
因此,可选的,一种具体实现方式中,如图4所示,本发明实施例所提供的任务处理方法还包括如下步骤S401。
S401:针对每个目标任务,记录处理该目标任务的实际耗时,作为再次处理该目标任务时,该目标任务的历史耗时。
基于此,下次处理该目标任务时,本次记录的目标任务的实际耗时便可以作为该目标任务的历史耗时。之前处理该目标任务时所记录的该目标任务的实际耗时也可以作为本次该目标任务在目标设备上的历史耗时。
可选的,一种具体实现方式中,可以创建一个耗时统计时间轮,然后通过该耗时统计时间轮记录每个目标任务的实际耗时。其中,耗时统计时间轮可以统计在当前时刻之前,且距离当前时刻最近的指定时间段内的耗时记录。
示例性的,耗时统计时间轮可以统计最近30min的耗时记录。
基于此,在根据目标任务的历史耗时,确定各个目标任务的排列顺序时,所依据的历史耗时是距离当前时刻最近的指定时间段内的历史耗时。进而,如果某个目标任务的耗时由于技术人员改变了该目标任务的实现逻辑而发生了变化,依据该目标任务的历史耗时所确定的该目标任务的排列顺序也可以较快的进行调整。因此,通过耗时统计时间轮记录每个目标任务的实际耗时还可以实现在目标任务耗时发生变化时,任务分配的自动调整。
可选的,一种具体实现方式中,如图5所示,本发明实施例提供的一种任务处理方法还包括:
S501:按照排列顺序将各个目标任务依次放入预设的阻塞队列。
基于阻塞队列“先进先出”的特点,目标任务放入阻塞队列的顺序也将是从阻塞队列中取出目标任务的顺序,因此,在将目标任务分配给各个目标线程时,便可以不再考虑各个目标任务的排列顺序,而是可以直接从阻塞队列中取出合适数量的目标任务。
因此,上述步骤S202:获取排列在前指定数量位的目标任务,分别分配给每个目标线程,以使每个目标线程处理所接收到的目标任务,包括:
S502:从阻塞队列中取出排列在前指定数量位的目标任务,分别分配给每个目标线程,以使每个目标线程处理所接收到的目标任务。
上述步骤S203:在存在处理完所接收到的目标任务且恢复空闲状态的目标线程时,将未分配的目标任务中,排列在第一位的目标任务分配给该目标线程,以使该目标线程处理所接收到的目标任务,直到不存在未分配的目标任务,包括:
S503:在存在处理完所接收到的目标任务且恢复空闲状态的目标线程时,将阻塞队列中,排列在第一位的目标任务分配该目标线程,以使该目标线程处理所接收到的目标任务,直到不存在未分配的目标任务。
基于相同的发明构思,相应于上述本发明实施例提供的一种任务处理方法,本发明实施例还提供了一种任务处理装置。
图6为本发明实施例提供的一种任务处理装置的结构示意图,如图6所示,该装置可以包括如下模块:
任务确定模块601,用于确定各个目标任务,并确定指定数量个处于空闲状态的目标线程;
第一任务分配模块602,用于获取指定数量个目标任务,分别分配给每个目标线程,以使每个目标线程处理所接收到的目标任务;
第二任务分配模块603,用于在存在处理完所接收到的目标任务且恢复空闲状态的目标线程时,为该目标线程分配一个未分配的目标任务,以使该目标线程处理所接收到的目标任务,直到不存在未分配的目标任务;
基于此,应用本发明实施例提供的方案,可以自动地将各个目标任务分配给各个目标线程,并使每个线程的任务处理耗时平尽量平均,从而实现请求的快速响应。因此,本发明实施例提供的方案可以实现任务的自动分配,节约人工成本和运维成本。另外,相较于现有技术中,由技术人员根据每个任务的耗时情况,将任务与线程之间的分配关系全部确定好,使每个线程的任务处理耗时尽量平均,本发明实施例提供的方案每次只给目标线程分配一个目标任务,在目标线程完成所接收到的目标任务并恢复空闲状态后,再为该目标线程分配一个未分配的目标任务。因此,本发明实施例提供的方案的任务分配的灵活性较高,部分目标任务单次耗时发生变化对目标任务总耗时的影响较小。
可选的,一种具体实现方式中,所述装置还包括:
顺序确定模块,用于确定所述各个目标任务的排列顺序;其中,所述排列顺序用于表征所述各个目标任务按照预计耗时由大到小进行排列的顺序;
所述第一任务分配模块,具体用于获取排列在前指定数量位的目标任务,分别分配给每个目标线程;
所述第二任务分配模块,具体用于在存在处理完所接收到的目标任务且恢复空闲状态的目标线程时,将未分配的目标任务中,排列在第一位的目标任务分配给该目标线程。
可选的,一种具体实现方式中,所述顺序确定模块,具体用于根据每个目标任务的历史耗时,确定该目标任务的预计耗时,并按照所确定的预计耗时由大到小的顺序,排列各个目标任务,得到所述各个目标任务的排列顺序。
可选的,一种具体实现方式中,所述装置还包括:
任务确定模块,用于确定各个目标任务中,存在历史耗时的各个第一任务,以及不存在历史耗时的各个第二任务;
所述顺序确定模块,具体用于根据每个第一任务的历史耗时,确定该第一任务的预计耗时,并按照所确定的预计耗时由大到小的顺序,排列各个第一任务;
将各个第二任务均排列在全部第一任务之前,得到所述各个目标任务的排列顺序。
可选的,一种具体实现方式中,所述装置还包括:
耗时记录模块,用于针对每个目标任务,记录处理该目标任务的实际耗时,作为再次处理该目标任务时,该目标任务的历史耗时。
可选的,一种具体实现方式中,所述顺序确定模块,具体用于根据该目标任务在指定时间段内的耗时记录,确定该目标任务的预计耗时;或者,
根据该目标任务在当前时刻之前,且距离当前时刻最近的指定次数的耗时记录,确定该目标任务的预计耗时。
可选的,一种具体实现方式中,所述装置还包括:
队列生成模块,用于按照所述排列顺序将各个目标任务依次放入预设的阻塞队列;
所述第一任务分配模块,具体用于从所述阻塞队列中取出排列在前指定数量位的目标任务,分别分配给每个目标线程;
所述第二任务分配模块,具体用于将所述阻塞队列中,排列在第一位的目标任务分配给该目标线程。
可选的,一种具体实现方式中,所述任务确定模块,具体用于:
读取目标线程池的配置信息;其中,所述配置信息包括:预设的每次任务处理的最大耗时和所述目标线程池内总线程数量,以及所述目标线程池中的每个线程处理各类任务的平均耗时;
基于所述配置信息以及处理各个目标任务的预计时长,确定指定数量;
在所述目标线程池中,确定所述指定数量个处于空闲状态的目标线程。
基于相同的发明构思,本发明实施例还提供了一种电子设备,如图7所示,包括处理器701、通信接口702、存储器703和通信总线704,其中,处理器701,通信接口702,存储器703通过通信总线704完成相互间的通信,
存储器703,用于存放计算机程序;
处理器701,用于执行存储器703上所存放的程序时,实现本发明实施例提供的任一任务处理方法的步骤。
上述终端提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processor,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述实施例中任一所述的任务处理方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的任务处理方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例、计算机可读存储介质实施例,以及计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (11)
1.一种任务处理方法,其特征在于,所述方法包括:
确定各个目标任务,并确定指定数量个处于空闲状态的目标线程;
获取指定数量个目标任务,分别分配给每个目标线程,以使每个目标线程处理所接收到的目标任务;
在存在处理完所接收到的目标任务且恢复空闲状态的目标线程时,为该目标线程分配一个未分配的目标任务,以使该目标线程处理所接收到的目标任务,直到不存在所述未分配的目标任务。
2.根据权利要求1所述的方法,其特征在于,在所述获取指定数量个目标任务,分别分配给每个目标线程之前,所述方法还包括:
确定所述各个目标任务的排列顺序;其中,所述排列顺序用于表征所述各个目标任务按照预计耗时由大到小进行排列的顺序;
所述获取指定数量个目标任务,分别分配给每个目标线程,包括:
获取排列在前指定数量位的目标任务,分别分配给每个目标线程;
所述在存在处理完所接收到的目标任务且恢复空闲状态的目标线程时,为该目标线程分配一个未分配的目标任务,包括:
在存在处理完所接收到的目标任务且恢复空闲状态的目标线程时,将未分配的目标任务中,排列在第一位的目标任务分配给该目标线程。
3.根据权利要求2所述的方法,其特征在于,所述确定所述各个目标任务的排列顺序,包括:
根据每个目标任务的历史耗时,确定该目标任务的预计耗时,并按照所确定的预计耗时由大到小的顺序,排列各个目标任务,得到所述各个目标任务的排列顺序。
4.根据权利要求3所述的方法,其特征在于,在所述根据每个目标任务的历史耗时,确定该目标任务的预计耗时之前,所述方法还包括:
确定各个目标任务中,存在历史耗时的各个第一任务,以及不存在历史耗时的各个第二任务;
所述根据每个目标任务的历史耗时,确定该目标任务的预计耗时,并按照所确定的预计耗时由大到小的顺序,排列各个目标任务,得到所述各个目标任务的排列顺序,包括:
根据每个第一任务的历史耗时,确定该第一任务的预计耗时,并按照所确定的预计耗时由大到小的顺序,排列各个第一任务;
将各个第二任务均排列在全部第一任务之前,得到所述各个目标任务的排列顺序。
5.根据权利要求3或4所述的方法,其特征在于,所述方法还包括:
针对每个目标任务,记录处理该目标任务的实际耗时,作为再次处理该目标任务时,该目标任务的历史耗时。
6.根据权利要求3所述的方法,其特征在于,所述根据每个目标任务的历史耗时,确定该目标任务的预计耗时,包括:
根据该目标任务在指定时间段内的耗时记录,确定该目标任务的预计耗时;或者,
根据该目标任务在当前时刻之前,且距离当前时刻最近的指定次数的耗时记录,确定该目标任务的预计耗时。
7.根据权利要求2所述的方法,其特征在于,在获取排列在前指定数量位的目标任务,分别分配给每个目标线程之前,所述方法还包括:
按照所述排列顺序将各个目标任务依次放入预设的阻塞队列;
所述获取排列在前指定数量位的目标任务,分别分配给每个目标线程,包括:
从所述阻塞队列中取出排列在前指定数量位的目标任务,分别分配给每个目标线程;
所述将未处理的目标任务中,排列在第一位的目标任务分配给该目标线程,包括:
将所述阻塞队列中,排列在第一位的目标任务分配给该目标线程。
8.根据权利要求1所述的方法,其特征在于,所述确定指定数量个处于空闲状态的目标线程,包括:
读取目标线程池的配置信息;其中,所述配置信息包括:预设的每次任务处理的最大耗时和所述目标线程池内总线程数量,以及所述目标线程池中的每个线程处理各类任务的平均耗时;
基于所述配置信息以及处理各个目标任务的预计时长,确定指定数量;
在所述目标线程池中,确定所述指定数量个处于空闲状态的目标线程。
9.一种任务处理装置,其特征在于,所述装置包括:
任务确定模块,用于确定各个目标任务,并确定指定数量个处于空闲状态的目标线程;
第一任务分配模块,用于获取指定数量个目标任务,分别分配给每个目标线程,以使每个目标线程处理所接收到的目标任务;
第二任务分配模块,用于在存在处理完所接收到的目标任务且恢复空闲状态的目标线程时,为该目标线程分配一个未分配的目标任务,以使该目标线程处理所接收到的目标任务,直到不存在所述未分配的目标任务。
10.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-8任一所述的方法步骤。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-8任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211323034.5A CN115599523A (zh) | 2022-10-27 | 2022-10-27 | 一种任务处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211323034.5A CN115599523A (zh) | 2022-10-27 | 2022-10-27 | 一种任务处理方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115599523A true CN115599523A (zh) | 2023-01-13 |
Family
ID=84851204
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211323034.5A Pending CN115599523A (zh) | 2022-10-27 | 2022-10-27 | 一种任务处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115599523A (zh) |
-
2022
- 2022-10-27 CN CN202211323034.5A patent/CN115599523A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11425194B1 (en) | Dynamically modifying a cluster of computing nodes used for distributed execution of a program | |
US11237870B1 (en) | Dynamically modifying program execution capacity | |
US9280390B2 (en) | Dynamic scaling of a cluster of computing nodes | |
US8689225B2 (en) | Attributing causality to program execution capacity modifications | |
CN102027453B (zh) | 用于在虚拟环境中优化中断处理的系统和方法 | |
US20170024285A1 (en) | Automatic serial starting of resource groups on failover | |
KR20180097674A (ko) | 메모리 리클레임 방법 및 장치 | |
JP2021521518A (ja) | 仮想マシンスケジューリング方法および装置 | |
US9875141B2 (en) | Managing pools of dynamic resources | |
CN107343023B (zh) | 一种Mesos管理集群中的资源分配方法、装置及电子设备 | |
US9665512B2 (en) | Memory management in presence of asymmetrical memory transfer cost | |
CN111078404B (zh) | 一种计算资源确定方法、装置、电子设备及介质 | |
US8769233B2 (en) | Adjusting the amount of memory allocated to a call stack | |
CN102799487A (zh) | 基于阵列/lun的io调度方法及装置 | |
CN112860387A (zh) | 分布式任务调度方法、装置、计算机设备及存储介质 | |
CN110716805A (zh) | 图形处理器的任务分配方法、装置、电子设备及存储介质 | |
CN111930516B (zh) | 一种负载均衡方法及相关装置 | |
CN112817687A (zh) | 一种数据同步方法和装置 | |
CN115599523A (zh) | 一种任务处理方法、装置、电子设备及存储介质 | |
CN110955644A (zh) | 一种存储系统的io控制方法、装置、设备及存储介质 | |
CN111090627B (zh) | 基于池化的日志存储方法、装置、计算机设备及存储介质 | |
CN114090201A (zh) | 资源调度方法、装置、设备及存储介质 | |
CN112805978A (zh) | 针对事件流处理的增强型锚协议 | |
CN114518957A (zh) | 资源调整方法、装置、电子设备及计算机可读存储介质 | |
CN118012589A (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 |