CN109426561A - 一种任务处理方法、装置及设备 - Google Patents
一种任务处理方法、装置及设备 Download PDFInfo
- Publication number
- CN109426561A CN109426561A CN201710757902.3A CN201710757902A CN109426561A CN 109426561 A CN109426561 A CN 109426561A CN 201710757902 A CN201710757902 A CN 201710757902A CN 109426561 A CN109426561 A CN 109426561A
- Authority
- CN
- China
- Prior art keywords
- thread
- task
- quota
- available
- dynamic
- 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 10
- 238000012545 processing Methods 0.000 claims abstract description 115
- 238000000034 method Methods 0.000 claims abstract description 51
- 230000008569 process Effects 0.000 claims description 23
- 238000002955 isolation Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 12
- 238000004590 computer program Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 238000013459 approach Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
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/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
-
- 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/5061—Partitioning or combining of resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/503—Resource availability
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
本申请提供一种任务处理方法、装置及设备,该方法包括:接收任务的处理请求,确定与所述任务对应的任务固定线程配额;若所述任务固定线程配额中不存在可用的线程资源,判断可使用动态线程数中是否存在可用的线程资源;所述任务固定线程配额包括所述任务能够使用的线程资源,所述可使用动态线程数包括多个任务共享的线程资源;如果存在,根据所述可使用动态线程数为所述任务分配线程资源;通过为所述任务分配的线程资源处理所述任务。通过本申请的技术方案,可以提高任务处理能力,缩短任务处理时间,减少用户等待时间,提升用户体验。可以实现线程资源的隔离,可以实现线程资源的共享。
Description
技术领域
本申请涉及互联网技术领域,尤其涉及一种任务处理方法、装置及设备。
背景技术
随着互联网的迅速发展,服务器需要为越来越多的用户提供业务,且业务种类也越来越多,如注册用户业务,商品数据更改业务,订单业务,商品搜索业务等,每种业务的处理,导致服务器需要处理大量任务。而处理这些任务需要较长时间,相应的,用户的等待时间也会比较长,因此,在一定程度上影响了用户体验。如何快速有效的处理这些任务,已经成为服务器面临的首要问题。
发明内容
本申请提供一种任务处理方法,所述方法包括:
接收任务的处理请求,并确定与所述任务对应的任务固定线程配额;
若所述任务固定线程配额中不存在可用的线程资源,则判断可使用动态线程数中是否存在可用的线程资源;其中,所述任务固定线程配额包括所述任务能够使用的线程资源,所述可使用动态线程数包括多个任务共享的线程资源;
如果存在,则根据所述可使用动态线程数为所述任务分配线程资源;
通过为所述任务分配的线程资源处理所述任务。
本申请提供一种任务处理装置,所述装置包括:
接收模块,用于接收任务的处理请求;
确定模块,用于确定与所述任务对应的任务固定线程配额;当所述任务固定线程配额中不存在可用的线程资源时,则判断可使用动态线程数中是否存在可用的线程资源;其中,所述任务固定线程配额包括所述任务能够使用的线程资源,所述可使用动态线程数包括多个任务共享的线程资源;
分配模块,用于当所述可使用动态线程数中存在可用的线程资源时,则根据所述可使用动态线程数为所述任务分配线程资源;
处理模块,用于通过为所述任务分配的线程资源处理所述任务。
本申请提供一种任务处理设备,所述任务处理设备包括:
处理器,用于接收任务的处理请求,并确定与所述任务对应的任务固定线程配额;若所述任务固定线程配额中不存在可用的线程资源,则判断可使用动态线程数中是否存在可用的线程资源;其中,所述任务固定线程配额包括所述任务能够使用的线程资源,所述可使用动态线程数包括多个任务共享的线程资源;如果存在,则根据所述可使用动态线程数为所述任务分配线程资源;通过为所述任务分配的线程资源处理所述任务。
基于上述技术方案,本申请实施例中,可以为每个任务配置任务固定线程配额,任务固定线程配额包括该任务能够使用的线程资源,为多个任务配置可使用动态线程数,可使用动态线程数包括多个任务共享的线程资源。当接收到任务的处理请求后,可以根据任务固定线程配额或者可使用动态线程数为任务分配线程资源,并通过为任务分配的线程资源处理任务。因此,在批量任务应用场景下,可以提高任务处理能力,缩短任务处理时间,减少用户等待时间,提升用户体验。通过为每个任务配置任务固定线程配额,使得每个任务具有自己独占的线程资源,可以实现线程资源的隔离。通过为多个任务配置可使用动态线程数,使得多个任务具有共享的线程资源,可以实现线程资源的共享。
附图说明
为了更加清楚地说明本申请实施例或者现有技术中的技术方案,下面将对本申请实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本申请实施例的这些附图获得其它的附图。
图1是本申请一种实施方式中的应用场景示意图;
图2A-图2D是本申请一种实施方式中的任务处理方法的流程图;
图3是本申请一种实施方式中的任务处理装置的结构图。
具体实施方式
在本申请实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本申请实施例提出一种任务处理方法,该方法可以应用于任务处理设备,该任务处理设备可以是服务器、PC(Personal Computer,个人计算机)、笔记本电脑、数据平台、电商平台、平板电脑、终端设备等,对此任务处理设备的类型不做限制,所有能够处理任务的设备均在本申请实施例的保护范围之内。
为了实现任务的处理,需要为任务分配线程资源,并通过线程资源处理该任务。而线程资源的创建和释放均需要系统开销,导致任务处理时间较长。例如,当处理任务1时,先为任务1创建线程资源,在任务1处理完成后,释放线程资源,当处理任务2时,为任务2创建线程资源,以此类推。这样,当任务处理设备需要处理大量任务时,则线程资源不断被创建和释放,消耗大量系统开销,导致任务处理时间很长,用户的等待时间也比较长,影响了用户体验。
针对上述发现,为了快速有效的处理任务,可以启用线程池,且该线程池中可以包括大量线程资源。这样,当有任务需要处理时,可以直接从线程池中选取线程资源,并通过这个线程资源处理该任务,当该任务处理完成后,这个线程资源直接回收到线程池。综上所述,由于所有线程资源均在线程池中,不用为任务重新创建线程资源,也不用释放线程资源,从而可以节省系统开销,提高任务处理能力,缩短任务处理时间,减少用户等待时间,提升用户体验。
基于线程池中的线程资源,任务处理设备可以采用如下方式处理任务:
方式一、使用全局线程池,即所有任务共享一个全局线程池。
例如,任务处理设备在接收到任务1的处理请求之后,从全局线程池中选取一个线程资源,并通过这个线程资源处理任务1。在接收到任务2的处理请求之后,从全局线程池中选取一个线程资源,并通过这个线程资源处理任务2。在接收到任务3的处理请求之后,从全局线程池中选取一个线程资源,并通过这个线程资源处理任务3。以此类推,这样,所有任务可以共享一个全局线程池。
但是,上述方式存在如下问题:由于全局线程池中的线程资源有限(如共20个线程资源),任务处理设备在接收到任务1的大量处理请求后,则任务1就可能占用全局线程池中的所有线程资源,导致其它任务没有可用的线程资源。
方式二、使用单独线程池,即每个任务使用一个单独线程池。
例如,任务1对应单独线程池1,任务2对应单独线程池2,以此类推。任务处理设备在接收到任务1的处理请求之后,从单独线程池1中选取线程资源,并通过这个线程资源处理任务1。在接收到任务2的处理请求之后,从单独线程池2中选取线程资源,并通过这个线程资源处理任务2。以此类推,这样,每个任务均使用单独线程池,即使用单独线程池中的线程资源处理该任务。
但是,上述方式存在如下问题:假设任务1的处理请求数量很多,而任务2的处理请求数量很少,这样,单独线程池1中的线程资源可能无法满足任务1的处理需要,而单独线程池2中的线程资源被大量空闲,从而造成资源的浪费。
方式三、使用弹性线程池,实现线程资源的动态分配,实现线程资源的隔离,以解决方式一的问题,还可以实现线程资源的共享,以解决方式二的问题。
在一个例子中,上述弹性线程池可以包括但不限于:任务线程池和共享线程池,每个任务可以单独对应一个任务线程池,且所有任务可以共同对应一个共享线程池。其中,在任务线程池中可以包括该任务能够使用的线程资源,在共享线程池中可以包括多个任务(如所有任务)能够共同使用的线程资源。
参见图1所示,以需要处理任务1和任务2为例,为任务1设置任务线程池1,为任务2设置任务线程池2,且任务1和任务2共用一个共享线程池。其中,每种类型的业务(如注册用户业务、商品数据更改业务、订单业务,商品搜索业务等)可以对应一个任务,该任务用于处理针对该业务的所有请求。例如,任务1用于处理注册用户业务对应的所有请求,即在接收到针对注册用户业务的请求后,由任务1处理。又例如,任务2用于处理商品数据更改业务对应的所有请求,即在接收到针对商品数据更改业务的请求后,由任务2处理。
在一个例子中,在使用弹性线程池的方式三中,可以涉及到如下概念:
1、最大线程数:即任务处理设备的最大允许线程数。其中,这个最大线程数与任务处理设备的性能有关,因此,可以根据任务处理设备的性能设置最大线程数,对此设置方式不做限制,可根据经验任意设置,如最大线程数为1000。
2、任务固定线程配额,该任务固定线程配额是任务独占的线程资源,可以是上述任务线程池中可用的线程资源数量,可以根据经验为每个任务设置任务固定线程配额,对此设置方式不做限制,只要所有任务的任务固定线程配额之和小于最大线程数即可。例如,任务1的任务固定线程配额为3,表示任务1独自使用3个线程资源,任务2无法使用任务1的这3个线程资源。任务2的任务固定线程配额为2,表示任务2独自使用2个线程资源,任务1无法使用这2个线程资源。为了实现上述过程,可以将任务固定线程配额3配置给任务1对应的任务线程池1,即任务线程池1具有3个线程资源;可以将任务固定线程配额2配置给任务2对应的任务线程池2,即任务线程池2具有2个线程资源。
3、可使用动态线程数,该可使用动态线程数是所有任务可以共享的线程资源,可以是上述共享线程池中可用的线程资源数量。其中,可使用动态线程数可以是:最大线程数与所有任务固定线程配额和,之间的差值。例如,当最大线程数为10,任务线程池1的任务固定线程配额为3,任务线程池2的任务固定线程配额为2时,则共享线程池的可使用动态线程数可以为5(10-2-3),其表示任务1和任务2可以共享所述共享线程池的这5个线程资源。
综上所述,由于每个任务线程池都有任务固定线程配额,即在任务线程池中包括每个任务能够独自使用的线程资源,从而可以通过任务线程池实现线程资源的隔离。由于共享线程池具有可使用动态线程数,即在共享线程池中包括所有任务能够共享的线程资源,从而可以通过共享线程池实现线程资源的共享。
4、任务动态线程配额,该任务动态线程配额是任务能够使用的可使用动态线程数(共享线程池)中的线程资源,即该任务能够占用的共享线程池的线程资源数量,可以根据经验为每个任务设置任务动态线程配额,对此设置方式不做限制。其中,为了避免某个任务占用共享线程池中的所有线程资源,导致其它任务无法使用共享线程池中的线程资源,则为每个任务设置任务动态线程配额,其表示该任务只能使用所述任务动态线程配额个共享线程池中的线程资源。
例如,任务1的任务动态线程配额为3,表示任务1只能使用共享线程池中的3个线程资源,即任务1在使用任务固定线程配额的3个线程资源的基础上,还可以使用共享线程池中的3个线程资源。任务2的任务动态线程配额为3,表示任务2只能使用共享线程池中的3个线程资源,即任务2在使用任务固定线程配额的2个线程资源的基础上,还可以使用共享线程池中的3个线程资源。
其中,当共享线程池中存在可用的线程资源时,若任务1使用共享线程池中的线程资源数量小于3个,则可以使用共享线程池中的线程资源,但是,当任务1使用共享线程池中的线程资源数量等于3个时,则不能使用共享线程池中的线程资源。若任务2使用共享线程池中的线程资源数量小于3个,则可以使用共享线程池中的线程资源,但是,当任务2使用共享线程池中的线程资源数量等于3个时,则不能使用共享线程池中的线程资源。当共享线程池中不存在可用的线程资源时,任务1和任务2均不能使用共享线程池中的线程资源。
在上述应用场景下,参见图2A所示,为任务处理方法的流程图。
步骤201,接收任务的处理请求,并确定与该任务对应的任务固定线程配额。
步骤202,若该任务固定线程配额中不存在可用的线程资源,则判断可使用动态线程数中是否存在可用的线程资源。如果是,则执行步骤203。如果否,则执行步骤205。其中,该任务固定线程配额可以包括该任务能够使用的线程资源,该可使用动态线程数可以包括多个任务(即所有任务)共享的线程资源。
在一个例子中,当该任务对应的任务固定线程配额大于0时,表示该任务固定线程配额中存在可用的线程资源,即该任务的任务线程池中存在可用的线程资源。当该任务对应的任务固定线程配额等于0时,表示该任务固定线程配额中不存在可用的线程资源,即该任务的任务线程池中不存在可用的线程资源。
其中,任务固定线程配额的初始值,已经在上述过程介绍,如任务1的任务固定线程配额的初始值为3,任务2的任务固定线程配额的初始值为2。基于此,每次根据任务固定线程配额为任务分配线程资源后,就将该任务固定线程配额减1,一直到该任务固定线程配额为0时,表示该任务固定线程配额不存在可用的线程资源,因此,不再根据该任务固定线程配额为任务分配线程资源。
其中,在根据任务固定线程配额为任务分配线程资源之后,则在该任务处理完成后,还可以释放为该任务分配的线程资源,并将该任务固定线程配额加1。这样,当该任务固定线程配额大于0时,又可以根据该任务固定线程配额为任务分配线程资源,并将该任务固定线程配额减1,以此类推,不断重复上述过程。
在一个例子中,当可使用动态线程数大于0时,表示可使用动态线程数中存在可用的线程资源,也就是说,共享线程池中存在可用的线程资源,执行步骤203;当可使用动态线程数等于0时,表示可使用动态线程数中不存在可用的线程资源源,也就是说,共享线程池中不存在可用的线程资源,执行步骤205。
其中,可使用动态线程数的初始值,已经在上述过程中进行介绍,如可使用动态线程数的初始值为5。在此基础上,在每次根据可使用动态线程数(即共享线程池)为任务分配线程资源后,就可以将该可使用动态线程数减1,一直到该可使用动态线程数为0,则表示该可使用动态线程数中已经不存在可用的线程资源,因此,不再根据该可使用动态线程数为任务分配线程资源。
其中,在根据可使用动态线程数为任务分配线程资源后,则在该任务处理完成后,释放为该任务分配的线程资源,并将该可使用动态线程数加1。这样,当该可使用动态线程数大于0时,又可以根据该可使用动态线程数为任务分配线程资源,并将该可使用动态线程数减1,以此类推,不断重复上述过程。
步骤203,根据可使用动态线程数为该任务分配线程资源(即将该可使用动态线程数中的一个线程资源分配给该任务),并将可使用动态线程数减1。
步骤204,通过为该任务分配的该线程资源处理该任务。
步骤205,将该任务添加到等待队列中,一直到任务固定线程配额和/或可使用动态线程数中存在可用的线程资源,才会处理等待队列中的任务。
在一个例子中,上述执行顺序只是为了方便描述所给出的一个示例,还可以改变各步骤之间的执行顺序,对此执行顺序不做限制。而且,在其它实施例中,并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其它实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其它实施例也可能被合并为单个步骤进行描述。
基于上述技术方案,本申请实施例中,可以为每个任务配置任务固定线程配额,任务固定线程配额包括该任务能够使用的线程资源,为多个任务配置可使用动态线程数,可使用动态线程数包括多个任务共享的线程资源。当接收到任务的处理请求后,可以根据任务固定线程配额或者可使用动态线程数为任务分配线程资源,并通过为任务分配的线程资源处理任务。因此,在批量任务应用场景下,可以提高任务处理能力,缩短任务处理时间,减少用户等待时间,提升用户体验。通过为每个任务配置任务固定线程配额,使得每个任务具有自己独占的线程资源,可以实现线程资源的隔离。通过为多个任务配置可使用动态线程数,使得多个任务具有共享的线程资源,可以实现线程资源的共享。
在图2A的基础上,参见图2B所示,为另一个任务处理方法的流程图。
步骤211,接收任务的处理请求,并确定与该任务对应的任务固定线程配额。
步骤212,判断该任务固定线程配额中是否存在可用的线程资源。
如果否,则可以执行步骤213;如果是,则可以执行步骤217。
步骤213,判断可使用动态线程数中是否存在可用的线程资源。
如果是,则可以执行步骤214。如果否,则可以执行步骤216。
步骤214,根据可使用动态线程数为该任务分配线程资源(即将该可使用动态线程数中的一个线程资源分配给该任务),并将可使用动态线程数减1。
步骤215,通过为该任务分配的该线程资源处理该任务。
步骤216,将该任务添加到等待队列中,一直到任务固定线程配额和/或可使用动态线程数中存在可用的线程资源,才会处理等待队列中的任务。
步骤217,根据该任务固定线程配额为该任务分配线程资源(即将该任务固定线程配额中的一个线程资源分配给该任务),并将该任务固定线程配额减1。
其中,步骤211-步骤217的处理流程,与步骤201-步骤205的处理流程类似,在此不再赘述。此外,在步骤217之后,还可以执行步骤215。
在一个例子中,上述执行顺序只是为了方便描述所给出的一个示例,本应用场景中还可以改变各步骤之间的执行顺序,对此执行顺序不做限制。
基于上述技术方案,本申请实施例中,可以为每个任务配置任务固定线程配额,任务固定线程配额包括该任务能够使用的线程资源,为多个任务配置可使用动态线程数,可使用动态线程数包括多个任务共享的线程资源。当接收到任务的处理请求后,可以根据任务固定线程配额或者可使用动态线程数为任务分配线程资源,并通过为任务分配的线程资源处理任务。因此,在批量任务应用场景下,可以提高任务处理能力,缩短任务处理时间,减少用户等待时间,提升用户体验。通过为每个任务配置任务固定线程配额,使得每个任务具有自己独占的线程资源,可以实现线程资源的隔离。通过为多个任务配置可使用动态线程数,使得多个任务具有共享的线程资源,可以实现线程资源的共享。
在图2A/2B的基础上,参见图2C所示,为另一个任务处理方法的流程图。
步骤221,接收任务的处理请求,并确定与该任务对应的任务固定线程配额。
步骤222,判断该任务固定线程配额中是否存在可用的线程资源。
如果否,则可以执行步骤223;如果是,则可以执行步骤228。
步骤223,判断该任务对应的任务动态线程配额中是否存在可用的线程资源。如果是,则可以执行步骤224;如果否,则可以执行步骤227。
步骤224,判断可使用动态线程数中是否存在可用的线程资源。
如果是,则可以执行步骤225;如果否,则可以执行步骤227。
步骤225,根据可使用动态线程数为该任务分配线程资源(即将该可使用动态线程数中的一个线程资源分配给该任务),并将可使用动态线程数减1。
步骤226,通过为该任务分配的该线程资源处理该任务。
步骤227,将该任务添加到等待队列中,一直到任务固定线程配额和/或可使用动态线程数中存在可用的线程资源,才会处理等待队列中的任务。
步骤228,根据该任务固定线程配额为该任务分配线程资源(即将该任务固定线程配额中的一个线程资源分配给该任务),并将该任务固定线程配额减1。
其中,步骤221-步骤228的处理流程,与步骤201-步骤205的处理流程类似,在此不再赘述。此外,在步骤228之后,执行步骤226。
在一个例子中,在通过为任务分配的线程资源处理任务后,若是根据任务固定线程配额为该任务分配的线程资源,则可以将该任务固定线程配额加1。若是根据可使用动态线程数为该任务分配的线程资源,则可以将该可使用动态线程数加1,并可以将该任务所对应的任务动态线程配额加1。此外,在根据可使用动态线程数为任务分配线程资源之后,还可以将该任务动态线程配额减1。
在一个例子中,在步骤223中,当该任务动态线程配额大于0时,则表示该任务动态线程配额中存在可用的线程资源;当该任务动态线程配额等于0时,则表示该任务动态线程配额中不存在可用的线程资源。
在一个例子中,上述执行顺序只是为了方便描述所给出的一个示例,本应用场景中还可以改变各步骤之间的执行顺序,对此执行顺序不做限制。
基于上述技术方案,本申请实施例中,可以为每个任务配置任务固定线程配额,任务固定线程配额包括该任务能够使用的线程资源,为多个任务配置可使用动态线程数,可使用动态线程数包括多个任务共享的线程资源。当接收到任务的处理请求后,可以根据任务固定线程配额或者可使用动态线程数为任务分配线程资源,并通过为任务分配的线程资源处理任务。因此,在批量任务应用场景下,可以提高任务处理能力,缩短任务处理时间,减少用户等待时间,提升用户体验。通过为每个任务配置任务固定线程配额,使得每个任务具有自己独占的线程资源,可以实现线程资源的隔离。通过为多个任务配置可使用动态线程数,使得多个任务具有共享的线程资源,可以实现线程资源的共享。
在图2A/2B的基础上,参见图2D所示,为另一个任务处理方法的流程图。
步骤231,接收任务的处理请求,并确定与该任务对应的任务固定线程配额。
步骤232,判断该任务固定线程配额中是否存在可用的线程资源。
如果否,则可以执行步骤233;如果是,则可以执行步骤238。
步骤233,判断可使用动态线程数中是否存在可用的线程资源。
如果是,则可以执行步骤234;如果否,则可以执行步骤237。
步骤234,判断该任务对应的任务动态线程配额中是否存在可用的线程资源。如果是,则可以执行步骤235;如果否,则可以执行步骤237。
步骤235,根据可使用动态线程数为该任务分配线程资源(即将该可使用动态线程数中的一个线程资源分配给该任务),并将可使用动态线程数减1。
步骤236,通过为该任务分配的该线程资源处理该任务。
步骤237,将该任务添加到等待队列中,一直到任务固定线程配额和/或可使用动态线程数中存在可用的线程资源,才会处理等待队列中的任务。
步骤238,根据该任务固定线程配额为该任务分配线程资源(即将该任务固定线程配额中的一个线程资源分配给该任务),并将该任务固定线程配额减1。
其中,步骤231-步骤238的处理流程,与步骤201-步骤205的处理流程类似,在此不再详加赘述。此外,在步骤238之后,执行步骤236。
在一个例子中,上述执行顺序只是为了方便描述所给出的一个示例,本应用场景中还可以改变各步骤之间的执行顺序,对此执行顺序不做限制。
基于上述技术方案,本申请实施例中,可以为每个任务配置任务固定线程配额,任务固定线程配额包括该任务能够使用的线程资源,为多个任务配置可使用动态线程数,可使用动态线程数包括多个任务共享的线程资源。当接收到任务的处理请求后,可以根据任务固定线程配额或者可使用动态线程数为任务分配线程资源,并通过为任务分配的线程资源处理任务。因此,在批量任务应用场景下,可以提高任务处理能力,缩短任务处理时间,减少用户等待时间,提升用户体验。通过为每个任务配置任务固定线程配额,使得每个任务具有自己独占的线程资源,可以实现线程资源的隔离。通过为多个任务配置可使用动态线程数,使得多个任务具有共享的线程资源,可以实现线程资源的共享。
基于与上述方法同样的申请构思,本申请实施例还提供一种任务处理装置,如图3所示,为所述任务处理装置的结构图,所述任务处理装置包括:
接收模块301,用于接收任务的处理请求;
确定模块302,用于确定与所述任务对应的任务固定线程配额;当所述任务固定线程配额中不存在可用的线程资源时,则判断可使用动态线程数中是否存在可用的线程资源;其中,所述任务固定线程配额包括所述任务能够使用的线程资源,所述可使用动态线程数包括多个任务共享的线程资源;
分配模块303,用于当所述可使用动态线程数中存在可用的线程资源时,则根据所述可使用动态线程数为所述任务分配线程资源;
处理模块304,用于通过为所述任务分配的线程资源处理所述任务。
所述分配模块303,还用于当所述任务固定线程配额中存在可用的线程资源时,根据所述任务固定线程配额为所述任务分配线程资源,并将所述任务固定线程配额减1;所述处理模块304,还用于当所述可使用动态线程数中不存在可用的线程资源时,将所述任务添加到等待队列;当所述可使用动态线程数中存在可用的线程资源时,在根据所述可使用动态线程数为所述任务分配线程资源后,将所述可使用动态线程数减1;当所述任务固定线程配额大于0时,表示所述任务固定线程配额中存在可用的线程资源;当所述任务固定线程配额等于0时,表示所述任务固定线程配额中不存在可用的线程资源;当可使用动态线程数大于0时,表示所述可使用动态线程数中存在可用的线程资源;当可使用动态线程数等于0时,表示所述可使用动态线程数中不存在可用的线程资源。
所述处理模块304,还用于在通过为所述任务分配的线程资源处理所述任务之后,若根据所述任务固定线程配额为所述任务分配线程资源,则在所述任务处理完成后,释放为所述任务分配的线程资源,并将所述任务固定线程配额加1;若根据所述可使用动态线程数为所述任务分配线程资源,则在所述任务处理完成后,释放为所述任务分配的线程资源,并将所述可使用动态线程数加1。
所述确定模块302,还用于在判断可使用动态线程数中是否存在可用的线程资源之前,判断所述任务对应的任务动态线程配额中是否存在可用的线程资源;当所述任务动态线程配额存在可用的线程资源时,则判断所述可使用动态线程数中是否存在可用的线程资源;所述处理模块,还用于当所述任务动态线程配额不存在可用的线程资源时,则将所述任务添加到等待队列中;或者,
所述确定模块302,还用于在根据所述可使用动态线程数为所述任务分配线程资源前,判断所述任务对应的任务动态线程配额中是否存在可用的线程资源;所述分配模块303,还用于当所述任务动态线程配额存在可用的线程资源时,根据可使用动态线程数为所述任务分配线程资源;所述处理模块304,还用于当所述任务动态线程配额不存在可用的线程资源时,将所述任务添加到等待队列中。
所述处理模块304,还用于在根据所述可使用动态线程数为所述任务分配线程资源之后,将所述任务动态线程配额减1;所述处理模块304,还用于在通过为所述任务分配的线程资源处理所述任务之后,在所述任务处理完成后,将所述任务动态线程配额加1;其中,当所述任务动态线程配额大于0时,表示所述任务动态线程配额中存在可用的线程资源;当所述任务动态线程配额等于0时,表示所述任务动态线程配额中不存在可用的线程资源。
基于与上述方法同样的申请构思,本申请实施例还提供了一种任务处理设备,所述任务处理设备可以包括:接收器、处理器、存储器和发射器等;其中,
所述处理器,用于接收任务的处理请求,并确定与所述任务对应的任务固定线程配额;若所述任务固定线程配额中不存在可用的线程资源,则判断可使用动态线程数中是否存在可用的线程资源;其中,所述任务固定线程配额包括所述任务能够使用的线程资源,所述可使用动态线程数包括多个任务共享的线程资源;如果存在,则根据所述可使用动态线程数为所述任务分配线程资源;通过为所述任务分配的线程资源处理所述任务。
基于与上述方法同样的申请构思,本申请实施例中还提供一种机器可读存储介质,该机器可读存储介质可以应用于任务处理设备,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被执行时进行如下处理:
接收任务的处理请求,并确定与所述任务对应的任务固定线程配额;若所述任务固定线程配额中不存在可用的线程资源,则判断可使用动态线程数中是否存在可用的线程资源;其中,所述任务固定线程配额包括所述任务能够使用的线程资源,所述可使用动态线程数包括多个任务共享的线程资源;如果存在,则根据所述可使用动态线程数为所述任务分配线程资源;通过为所述任务分配的线程资源处理所述任务。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (14)
1.一种任务处理方法,其特征在于,所述方法包括:
接收任务的处理请求,并确定与所述任务对应的任务固定线程配额;
若所述任务固定线程配额中不存在可用的线程资源,则判断可使用动态线程数中是否存在可用的线程资源;其中,所述任务固定线程配额包括所述任务能够使用的线程资源,所述可使用动态线程数包括多个任务共享的线程资源;
如果存在,则根据所述可使用动态线程数为所述任务分配线程资源;
通过为所述任务分配的线程资源处理所述任务。
2.根据权利要求1所述的方法,其特征在于,
所述确定与所述任务对应的任务固定线程配额之后,所述方法还包括:
若所述任务固定线程配额中存在可用的线程资源,则根据所述任务固定线程配额为所述任务分配线程资源,并将所述任务固定线程配额减1;
其中,当所述任务固定线程配额大于0时,表示所述任务固定线程配额中存在可用的线程资源;当所述任务固定线程配额等于0时,表示所述任务固定线程配额中不存在可用的线程资源。
3.根据权利要求1所述的方法,其特征在于,所述判断可使用动态线程数中是否存在可用的线程资源之后,所述方法还包括:
如果不存在可用的线程资源,则将所述任务添加到等待队列中。
4.根据权利要求1所述的方法,其特征在于,所述根据所述可使用动态线程数为所述任务分配线程资源之后,所述方法还包括:
将所述可使用动态线程数减1;其中,当所述可使用动态线程数大于0时,表示所述可使用动态线程数中存在可用的线程资源;当所述可使用动态线程数等于0时,表示所述可使用动态线程数中不存在可用的线程资源。
5.根据权利要求1或2所述的方法,其特征在于,
所述通过为所述任务分配的线程资源处理所述任务之后,所述方法还包括:
若根据所述任务固定线程配额为所述任务分配线程资源,则在所述任务处理完成后,释放为所述任务分配的线程资源,并将所述任务固定线程配额加1;
若根据所述可使用动态线程数为所述任务分配线程资源,则在所述任务处理完成后,释放为所述任务分配的线程资源,并将所述可使用动态线程数加1。
6.根据权利要求1所述的方法,其特征在于,所述判断可使用动态线程数中是否存在可用的线程资源之前,所述方法还包括:
判断所述任务对应的任务动态线程配额中是否存在可用的线程资源;
如果存在,执行判断可使用动态线程数中是否存在可用的线程资源的过程;
如果不存在,则将所述任务添加到等待队列中。
7.根据权利要求1所述的方法,其特征在于,所述根据所述可使用动态线程数为所述任务分配线程资源之前,所述方法还包括:
判断所述任务对应的任务动态线程配额中是否存在可用的线程资源;
如果存在,则执行根据所述可使用动态线程数为所述任务分配线程资源的过程;如果不存在,则将所述任务添加到等待队列中。
8.根据权利要求6或7所述的方法,其特征在于,所述根据所述可使用动态线程数为所述任务分配线程资源之后,所述方法还包括:
将所述任务动态线程配额减1;
所述通过为所述任务分配的线程资源处理所述任务之后,所述方法还包括:
在所述任务处理完成后,将所述任务动态线程配额加1;
其中,当所述任务动态线程配额大于0时,表示所述任务动态线程配额中存在可用的线程资源;当所述任务动态线程配额等于0时,表示所述任务动态线程配额中不存在可用的线程资源。
9.一种任务处理装置,其特征在于,所述装置包括:
接收模块,用于接收任务的处理请求;
确定模块,用于确定与所述任务对应的任务固定线程配额;当所述任务固定线程配额中不存在可用的线程资源时,则判断可使用动态线程数中是否存在可用的线程资源;其中,所述任务固定线程配额包括所述任务能够使用的线程资源,所述可使用动态线程数包括多个任务共享的线程资源;
分配模块,用于当所述可使用动态线程数中存在可用的线程资源时,则根据所述可使用动态线程数为所述任务分配线程资源;
处理模块,用于通过为所述任务分配的线程资源处理所述任务。
10.根据权利要求9所述的装置,其特征在于,
所述分配模块,还用于当所述任务固定线程配额中存在可用的线程资源时,则根据所述任务固定线程配额为所述任务分配线程资源,并将所述任务固定线程配额减1;
所述处理模块,还用于当所述可使用动态线程数中不存在可用的线程资源时,将所述任务添加到等待队列;当所述可使用动态线程数中存在可用的线程资源时,在根据所述可使用动态线程数为所述任务分配线程资源后,将所述可使用动态线程数减1;
其中,当所述任务固定线程配额大于0时,表示所述任务固定线程配额中存在可用的线程资源;当所述任务固定线程配额等于0时,表示所述任务固定线程配额中不存在可用的线程资源;当所述可使用动态线程数大于0时,表示所述可使用动态线程数中存在可用的线程资源;当所述可使用动态线程数等于0时,表示所述可使用动态线程数中不存在可用的线程资源。
11.根据权利要求9或10所述的装置,其特征在于,
所述处理模块,还用于在通过为所述任务分配的线程资源处理所述任务之后,若根据所述任务固定线程配额为所述任务分配线程资源,则在所述任务处理完成后,释放为所述任务分配的线程资源,并将所述任务固定线程配额加1;若根据所述可使用动态线程数为所述任务分配线程资源,则在所述任务处理完成后,释放为所述任务分配的线程资源,并将所述可使用动态线程数加1。
12.根据权利要求9所述的装置,其特征在于,
所述确定模块,还用于在判断可使用动态线程数中是否存在可用的线程资源之前,判断所述任务对应的任务动态线程配额中是否存在可用的线程资源;当所述任务动态线程配额存在可用的线程资源时,则判断所述可使用动态线程数中是否存在可用的线程资源;所述处理模块,还用于当所述任务动态线程配额不存在可用的线程资源时,则将所述任务添加到等待队列中;或者,
所述确定模块,还用于在根据所述可使用动态线程数为所述任务分配线程资源之前,判断所述任务对应的任务动态线程配额中是否存在可用的线程资源;所述分配模块,还用于当所述任务动态线程配额存在可用的线程资源时,根据所述可使用动态线程数为所述任务分配线程资源;所述处理模块,还用于当所述任务动态线程配额不存在可用的线程资源时,将所述任务添加到等待队列中。
13.根据权利要求12所述的装置,其特征在于,
所述处理模块,还用于在根据所述可使用动态线程数为所述任务分配线程资源之后,将所述任务动态线程配额减1;
所述处理模块,还用于在通过为所述任务分配的线程资源处理所述任务之后,在所述任务处理完成后,将所述任务动态线程配额加1;
其中,当所述任务动态线程配额大于0时,表示所述任务动态线程配额中存在可用的线程资源;当所述任务动态线程配额等于0时,表示所述任务动态线程配额中不存在可用的线程资源。
14.一种任务处理设备,其特征在于,所述任务处理设备包括:
处理器,用于接收任务的处理请求,并确定与所述任务对应的任务固定线程配额;若所述任务固定线程配额中不存在可用的线程资源,则判断可使用动态线程数中是否存在可用的线程资源;其中,所述任务固定线程配额包括所述任务能够使用的线程资源,所述可使用动态线程数包括多个任务共享的线程资源;如果存在,则根据所述可使用动态线程数为所述任务分配线程资源;通过为所述任务分配的线程资源处理所述任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710757902.3A CN109426561A (zh) | 2017-08-29 | 2017-08-29 | 一种任务处理方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710757902.3A CN109426561A (zh) | 2017-08-29 | 2017-08-29 | 一种任务处理方法、装置及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109426561A true CN109426561A (zh) | 2019-03-05 |
Family
ID=65503508
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710757902.3A Pending CN109426561A (zh) | 2017-08-29 | 2017-08-29 | 一种任务处理方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109426561A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109976891A (zh) * | 2019-03-28 | 2019-07-05 | 北京网聘咨询有限公司 | 基于任务线程配置的服务器任务处理方法 |
CN110109760A (zh) * | 2019-05-10 | 2019-08-09 | 深圳前海达闼云端智能科技有限公司 | 一种内存资源控制方法及装置 |
CN110457124A (zh) * | 2019-08-06 | 2019-11-15 | 中国工商银行股份有限公司 | 针对业务线程的处理方法及其装置、电子设备和介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101009642A (zh) * | 2006-12-31 | 2007-08-01 | 华为技术有限公司 | 一种基于任务分组的资源分配方法和装置 |
US20090165007A1 (en) * | 2007-12-19 | 2009-06-25 | Microsoft Corporation | Task-level thread scheduling and resource allocation |
US20150121390A1 (en) * | 2013-10-24 | 2015-04-30 | International Business Machines Corporation | Conditional serialization to improve work effort |
US20150339164A1 (en) * | 2009-12-23 | 2015-11-26 | Citrix Systems, Inc. | Systems and methods for managing spillover limits in a multi-core system |
CN106095590A (zh) * | 2016-07-21 | 2016-11-09 | 联动优势科技有限公司 | 一种基于线程池的任务分配方法及装置 |
-
2017
- 2017-08-29 CN CN201710757902.3A patent/CN109426561A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101009642A (zh) * | 2006-12-31 | 2007-08-01 | 华为技术有限公司 | 一种基于任务分组的资源分配方法和装置 |
US20090165007A1 (en) * | 2007-12-19 | 2009-06-25 | Microsoft Corporation | Task-level thread scheduling and resource allocation |
US20150339164A1 (en) * | 2009-12-23 | 2015-11-26 | Citrix Systems, Inc. | Systems and methods for managing spillover limits in a multi-core system |
US20150121390A1 (en) * | 2013-10-24 | 2015-04-30 | International Business Machines Corporation | Conditional serialization to improve work effort |
CN106095590A (zh) * | 2016-07-21 | 2016-11-09 | 联动优势科技有限公司 | 一种基于线程池的任务分配方法及装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109976891A (zh) * | 2019-03-28 | 2019-07-05 | 北京网聘咨询有限公司 | 基于任务线程配置的服务器任务处理方法 |
CN109976891B (zh) * | 2019-03-28 | 2020-11-03 | 北京网聘咨询有限公司 | 基于任务线程配置的服务器任务处理方法 |
CN110109760A (zh) * | 2019-05-10 | 2019-08-09 | 深圳前海达闼云端智能科技有限公司 | 一种内存资源控制方法及装置 |
CN110109760B (zh) * | 2019-05-10 | 2021-07-02 | 达闼机器人有限公司 | 一种内存资源控制方法及装置 |
CN110457124A (zh) * | 2019-08-06 | 2019-11-15 | 中国工商银行股份有限公司 | 针对业务线程的处理方法及其装置、电子设备和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110647394B (zh) | 一种资源分配方法、装置及设备 | |
CN111475235B (zh) | 函数计算冷启动的加速方法、装置、设备及存储介质 | |
KR102182295B1 (ko) | 하드웨어 기반 태스크 스케쥴링 장치 및 방법 | |
CN106371894B (zh) | 一种配置方法、装置和数据处理服务器 | |
CN107688495B (zh) | 调度处理器的方法及设备 | |
CN109564528B (zh) | 分布式计算中计算资源分配的系统和方法 | |
EP1253516A2 (en) | Apparatus and method for scheduling processes on a fair share basis | |
CN106897299B (zh) | 一种数据库访问方法及装置 | |
CN105589750A (zh) | 一种cpu资源调度方法和服务器 | |
US10614542B2 (en) | High granularity level GPU resource allocation method and system | |
CN106790332B (zh) | 一种资源调度方法、系统及主节点 | |
CN114020470A (zh) | 资源分配方法、装置、可读介质及电子设备 | |
US20200174821A1 (en) | System, method and computer program for virtual machine resource allocation | |
CN111913792B (zh) | 一种业务处理方法和装置 | |
CN110188975B (zh) | 一种资源获取方法及装置 | |
CN105893497A (zh) | 一种任务处理方法和装置 | |
WO2016202154A1 (zh) | 一种gpu资源的分配方法及系统 | |
CN109426561A (zh) | 一种任务处理方法、装置及设备 | |
CN108028806B (zh) | 网络功能虚拟化nfv网络中分配虚拟资源的方法和装置 | |
CN109582445A (zh) | 消息处理方法、装置、电子设备及计算机可读存储介质 | |
CN115237589A (zh) | 一种基于sr-iov的虚拟化方法、装置和设备 | |
CN109189581B (zh) | 一种作业调度方法和装置 | |
CN111813541B (zh) | 一种任务调度方法、装置、介质和设备 | |
CN111290842A (zh) | 一种任务执行方法和装置 | |
CN107634978B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190305 |
|
RJ01 | Rejection of invention patent application after publication |