CN110018892A - 基于线程资源的任务处理方法及相关装置 - Google Patents
基于线程资源的任务处理方法及相关装置 Download PDFInfo
- Publication number
- CN110018892A CN110018892A CN201910186590.4A CN201910186590A CN110018892A CN 110018892 A CN110018892 A CN 110018892A CN 201910186590 A CN201910186590 A CN 201910186590A CN 110018892 A CN110018892 A CN 110018892A
- Authority
- CN
- China
- Prior art keywords
- thread
- task
- mentioned
- resource
- sub
- 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 claims abstract description 13
- 238000012545 processing Methods 0.000 claims abstract description 97
- 238000000034 method Methods 0.000 claims abstract description 43
- 238000004590 computer program Methods 0.000 claims description 7
- 230000008569 process Effects 0.000 abstract description 6
- 238000012986 modification Methods 0.000 description 8
- 230000004048 modification Effects 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 5
- 230000000903 blocking effect Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 2
- 238000013468 resource allocation Methods 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 238000012800 visualization Methods 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/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/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
- G06F9/5038—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 considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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/48—Indexing scheme relating to G06F9/48
- G06F2209/484—Precedence
-
- 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/5021—Priority
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是本发明实施例提供的基于线程资源的任务处理方法的一流程图;
图2是本发明实施例提供的基于线程资源的任务处理方法的另一流程图;
图3是本发明实施例提供的任务处理装置的结构示意图;
图4是本发明实施例提供的终端设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的基于线程资源的任务处理方法(为方便描述,可简称本发明实施例提供的方法)可以适用于各种企业的业务处理***,以及各种网上业务办理***中,在此不做限制。本发明实施例提供的方法可在基于线程资源的基础上通过确定目标任务的任务类型来确定线程资源信号量,并基于确定的线程资源信号量确定线程池中用于执行该任务类型的任务的空闲线程资源数量。同时基于用于执行该任务类型的任务的空闲线程资源数量的实际情况采取不同信号量配置以及任务处理方式,从而可针对不同类型的任务分类处理。基于资源信号量的不同配置可实现对用于执行各任务类型的任务的线程资源的灵活分配,可极大提升***处理任务的效率,节约时间,缩小成本。本发明实施例内目标任务的类型包括但不限于产品、业务等,在此不做限制,为方便描述,下面可以某一企业和/或某一任务***中的某一目标任务为例,对本发明实施例提供的方法进行描述。
下面将结合图1至图4分别对本发明实施例提供的方法及相关装置进行说明。本发明实施例提供的方法可包括线程资源信号量的确定、空闲线程资源数量的确定以及基于空闲线程资源处理目标任务等阶段。
参见图1,图1是本发明实施例提供的基于线程资源的任务处理方法的一流程图。本发明实施例提供的方法可包括如下步骤S1-S4:
S1、接收目标任务触发的任务处理请求。
在一些可行的实施方式中,多线程并发式任务触发常见于包括web服务器和/或其他各种专用服务器的后台多任务并行处理的应用场景中,例如常见的多线程并发应用场景中包括各类服务器的后台多任务并行处理的应用场景,如定时向大量的用户发送邮件,多任务异步处理,多任务的数据分布式计算等,在此不做限制。在接收目标任务触发的任务处理请求时,该目标任务的触发请求可通过各种类型的客户端、应用程序(application,简称APP)以及服务器等发送,具体发送方式在此不做限制。目标任务可以是某企业进行的邮件下发任务、某工厂对产品进行的核查清算任务以及某服务器下达的数据处理任务,具体任务触发场景和方式在此不做限制。举例来说,企业需要对内下发邮件时,企业工作人员会在电脑端执行对内邮件下发操作,当企业工作人员确认下达对内邮件发送指令时,该指令在同一时间触发对内邮件下发的任务处理请求。
S2、基于上述任务处理请求确定上述目标任务的第一任务类型,并根据上述第一任务类型确定第一线程资源信号量。
在一些可行的实施方式中,当接收到上述目标任务触发的任务处理请求后,可根据任务处理请求内包含的信息来确定上述目标任务的第一任务类型。其中,上述目标任务的任务类型可以是包括计算型任务、通信型任务、查询型任务、搜索型任务等,也可以是通过产品、业务等进行区分的任务类型,具体可根据实际应用场景确定,在此不做限制。任务处理请求内包含的信息可以包括但不限于任务类型标签、参数以及特殊标记等,在此不做限制。当获取到上述任务处理请求后,通过对上述任务处理请求进行解析并根据任务处理请求内包含的信息对任务类型进行识别,并确定上述目标任务的第一任务类型。
在一些可行的实施方式中,在接收上述目标任务触发的任务处理请求之前,可将包含多个线程资源的线程池划分为多个子线程池,也可直接建立多个子线程池。其中一个子线程池中至少包括一个线程资源,每个子线程池中的线程资源数量可根据具体应用场景和目标任务数量来确定,在此不做限制。同时将线程池划分为多个子线程池后,每个线程池中的线程资源可独立处理同一类型和/或相似类型的任务,便于将同一类型和/或相似类型的任务采取集中有序的处理方式,相关工作人员也可直观了解每种类型的任务处理数量和处理进度,以及时做出灵活调整。在划分和/或建立好多个子线程池后,设定上述多个子线程池中各个子线程池对应的一组线程资源信号量,其中,任一子线程池对应的一组线程资源信号量中的一个线程资源信号量,用于指示所述任一子线程池中用于执行一种任务类型的任务的空闲线程资源数量。在设定上述多个子线程池中各个子线程池对应的一组线程资源信号量的同时,为每个线程资源信号量设定一个线程资源标识,线程资源标识与上述目标任务的任务类型一一对应,即一个线程资源标识对应一种任务类型,该对应关系可通过线程资源标识和任务类型之间的相互匹配而建立。当确定上述目标任务的第一任务类型之后,根据上述目标任务的第一任务类型在多个线程资源标识中找到符合对应关系的线程资源标识,并将该线程资源标识对应的线程资源信号量确定为第一线程资源信号量。
可以理解的是,线程资源信号量也可以被称为信号灯,用来保证两个和/或多个并发任务不被同一个线程资源调用。例如,假设某线程池内只有三个线程资源,且一开始上述三个线程资源都是空闲线程资源,此时如果有五个任务需要处理,那么线程资源信号量只允许三个任务访问线程池内的空闲线程资源,且后来的任务也不能访问线程池内的任何线程资源。当线程池内有一个任务处理完毕,那么线程资源信号量再允许另一个任务访问线程池内的唯一一个空闲线程资源,如果线程池内又有两个任务处理完毕,则线程资源信号量又可允许另两个任务访问线程池内的两个空闲线程资源,如此重复。在这里,线程资源信号量包括但不限于整型信号量、记录型信号量、二进制信号量以及具有相同功能的标识符、参数和操作函数集合,在此不做限制。
举例来说,当某企业需要批量下发邮件时,企业向***提交任务后确认发出处理下发邮件的任务处理请求,该任务处理请求内可包括邮件的发送对象、对内邮件、对外邮件以及邮件发送部门等信息,通过对上述下发邮件的任务处理请求内所包含的任务信息进行解析确定下发邮件的第一任务类型,若企业要求处理对内邮件,则下发邮件的第一任务类型为对内发送。在确定下发邮件的第一任务类型为对内发送后,在现有的线程资源标识中找到标识为对内发送的线程资源标识,该标识对应的线程资源为用于执行对内发送任务的线程资源,同时确定与该线程资源相对应的线程资源信号量为第一线程资源信号量。
S3、根据上述第一线程资源信号量确定第一子线程池中用于执行上述第一任务类型的任务的空闲线程资源数量。
在一些可行的实施方式中,在接收到目标任务的处理请求之后,上述第一资源信号量所指示的上述第一子线程池中用于执行上述第一任务类型的任务的空闲线程资源数量可通过一个计数器来控制。该计数器所显示的数值在***启动后处于初始化状态,且该计数器显示的数值用于指示用于执行上述第一任务类型的任务的空闲线程资源数量。其中,上述多个子线程池中至少包括上述第一子线程池,上述第一子线程池对应的一组线程资源信号量中至少包括上述第一线程资源信号量。当上述第一子线程池中用于执行上述第一任务类型的任务的空闲线程资源被上述目标任务访问后,与上述空闲线程资源对应的计数器的数值也会减少,减少的数值与被访问的空闲线程资源的数量一致。通过计数器显示的数值,可直观地观察到任一子线程池中用于执行任一任务类型的任务的空闲线程资源数量,以便于对所有的空闲线程资源进行动态调整,确保目标任务能够快速的得到处理,提高任务处理的效率。举例来说,如果上述第一子线程池中用于执行上述第一任务类型的任务的空闲线程资源数量为N,即与之对应的计数器的数值为N时,表示上述第一子线程池中的空闲线程资源可并发执行的任务数量为N,此时上述第一子线程池中的空闲线程资源可允许N个任务访问。当某一任务访问上述第一子线程池中的用于执行上述第一任务类型的任务的空闲线程资源成功时,则与之对应的计数器数值减一。当上述计数器的数值为零时,表示上述第一子线程池中用于执行上述第一任务类型的任务的空闲线程资源数量为零,也就是说此时上述第一子线程池中用于执行上述第一任务类型的任务的空闲线程资源已全部被占用,不允许其他任务进行访问。
举例来说,当企业批量下发邮件时,在确定下发邮件的第一任务类型为对内发送,且确定用于执行对内发送任务的线程资源以及第一线程资源信号量后,查看第一线程资源信号量对应的计数器显示的值。若上述计数器的值为10,则表示此时上述第一子线程池中用于执行对内发送任务的空闲线程资源数量为10。若上述计数器的值为零,则表示此时上述第一子线程池中没有可用于执行对内发送任务的空闲线程资源数量。
S4、若上述用于执行上述第一任务类型的任务的空闲线程资源数量不为零,则确定上述第一子线程池中用于执行上述目标任务的空闲线程资源,并基于上述空闲线程资源处理上述目标任务。
在一些可行的实施方式中,当上述计数器显示的数值不为零时,即用于执行上述第一任务类型的任务的空闲线程资源数量不为零时,可确定上述第一子线程池中用于执行上述目标任务的空闲线程资源。也就是说计数器显示的用于执行上述第一任务类型的任务的空闲线程资源数量可全部用于执行上述目标任务。举例来说,如果上述第一子线程池中用于执行上述第一任务类型的任务的空闲线程资源数量为N,即与之对应的计数器的数值为N时,此时上述第一子线程池中的空闲线程资源可允许N个任务访问,也就是说上述第一子线程池中的N个空闲线程资源可用于执行上述第一任务类型的任务。当一项任务访问上述第一子线程池中的用于执行上述第一任务类型的任务的空闲线程资源成功时,则与之对应的计数器数值减一。当N个任务访问上述第一子线程池中的用于执行上述第一任务类型的任务的空闲线程资源成功后,上述计数器的数值递减为零,此时上述第一子线程池中用于执行上述第一任务类型的任务的空闲线程资源已全部被占用,不允许其他任务进行访问。
在本发明实施例中,基于线程资源信号量对目标任务在其访问线程池中的空闲线程资源时,根据任务类型确定不同的线程资源对任务进行处理,使得同一类型的任务可集中处理,不同类型的目标任务进行分类隔离,增加了任务处理的可视化程度。基于资源信号量对目标任务访问线程池中的空闲线程资源进行控制,提高了任务处理的效率,灵活性好,适用性高。
可选的,在一些可行的实施方式中,当上述第一子线程池中用于执行上述第一任务类型的任务的空闲线程资源数量为零时,请参见图2,图2是本发明实施例提供的基于线程资源的任务处理方法的另一流程图。本发明实施例提供的基于线程资源的任务处理方法的另一方法可包括步骤:
S5、确定上述第一子线程池中没有用于执行上述目标任务的空闲线程资源。
在一些可行的实施方式中,当上述第一子线程池中用于执行上述第一任务类型的任务的空闲线程资源数量为零时,即计数器显示的数值为零时,此时上述第一子线程池中的空闲线程资源可并发执行的任务数量为零,上述第一子线程池中的空闲线程资源可允许零个任务访问。在这种情况下,可确定上述第一子线程池中没有用于执行上述目标任务的空闲线程资源。基于上述计数器显示的数值,可直接判断上述第一子线程池中是否有用于执行上述目标任务的空闲线程资源,避免了传统方式中需检测上述第一子线程池中的线程资源的工作情况,以及上述第一子线程池中是否有任务堆积情况等繁琐步骤,适用性更高。
S6、修改上述第一线程资源信号量以增加上述第一线程资源信号量所指示的线程资源数量,并修改上述第一子线程池对应的一组线程资源信号量中除去上述第一线程资源信号量之外的第二线程资源信号量,以减少上述第二线程资源信号量所指示的线程资源数量。
在一些可行的实施方式中,在上述第一子线程池中用于执行上述第一任务类型的任务的空闲线程资源数量为零时,可修改上述第一线程资源信号量以增加上述第一线程资源信号量所指示的线程资源数量。因为在上述第一子线程池中的线程资源数量是固定的,故在增加上述第一线程资源信号量所指示的线程资源数量时,需要修改上述第一子线程池中对应的一组线程资源信号量中去除上述第一线程资源信号量之外的第二线程资源信号量,以减少上述第二线程资源信号量所指示的线程资源数量。也就是说,上述第二线程资源信号量所指示的线程资源数量中减少的线程资源数量即为上述第一线程资源信号量所指示的线程资源数量中增加的线程资源数量。其中,所述第二线程资源信号量用于指示所述第一子线程池中用于执行第二任务类型的任务的线程资源数量。上述第二任务类型可以是上述第一任务类型之外的任意一个或者多个任务类型,具体可根据实际应用场景确定,在此不做限制。
举例来说,当第一子线程池中用于执行对内发送任务类型的任务的空闲线程资源数量为零时,修改与对内发送线程资源信号量以增加对内发送线程资源信号量所指示的线程资源数量。同时,修改上述第一子线程池中其他任务类型例如对外发送线程资源信号量,以减少上述对外发送线程资源信号量所指示的线程资源数量,其中上述第一子线程池中对外发送线程资源信号量所指示的线程资源数量中减少的线程资源数量与所述第一子线程池中对内发送线程资源信号量所示的线程资源数量中增加的线程资源数量一致。简单来说,在上述第一子线程池中用于执行上述第一任务类型的任务的空闲线程资源数量为零时,可增加所述第一子线程池中用于执行上述第一任务类型的任务的线程资源数量来增加用于执行上述第一任务类型的任务的空闲线程资源数量。
在一些可行的实施方式中,当上述第一子线程池中除去上述第一线程资源信号量之外的其他所有线程资源信号量都不能被修改时,可根据上述第一线程资源信号量确定除去上述第一子线程池之外的其他子线程池中用于执行上述第一任务类型的任务的空闲线程资源数量,和/或修改除去上述第一子线程池之外其他子线程池对应的一组线程资源信号量中除去上述第一线程资源信号量之外的其他线程资源信号量,以增加用于执行上述第一任务类型的任务的空闲资源线程。通过多种修改线程资源信号量的方式,可有效避免因为单一的资源信号量修改规则所带来的任务冗余和线程资源信号量利用率低的情况,适用性更高。
可选的,当包括上述第一子线程池在内的所有子线程池同时处理多种任务类型的任务时,可对不同任务类型的任务对应的不同线程资源信号量增加各自的自定义操作,使每个线程资源信号量在实现其对应的任务类型的任务访问线程资源的同时,实现每个线程资源信号量所指示的线程资源的资源共享。以***接收到多个目标任务触发的任务处理请求后确定目标任务为第一任务类型的任务和第二任务类型的为例,***可确定第一线程资源信号量和第二线程资源信号量,以及用于执行上述第一任务类型的任务的空闲线程资源和用于执行上述第二任务类型的任务的空闲线程资源。同时可对第一线程资源信号量对应的计数器和第二线程资源信号量对应的计数器进行实时监测。若监测到第一线程资源信号量对应的计数器显示的数值达到阈值,且第二线程资源信号量对应的计数器显示的数值未达到阈值,则将第二线程资源信号量所指示的空闲线程资源分配至第一线程资源信号量所指示的线程资源内,以增加第一线程资源信号量所指示的空闲线程资源数量。实现第一线程资源信号量所指示的线程资源与第二线程资源信号量所指示的线程资源之间的动态分配,提高线程资源的利用率。同理,若监测到第二线程资源信号量对应的计数器显示的数值达到阈值,且第一线程资源信号量对应的计数器显示的数值未达到阈值,则将第一线程资源信号量所指示的空闲线程资源分配至第二线程资源信号量所指示的线程资源内,以增加第二线程资源信号量所指示的空闲线程资源数量。
S7、根据增加后的上述第一线程资源信号量所指示的空闲线程资源数量从上述第一子线程池中确定出用于执行上述第一任务类型的任务的空闲线程资源,并基于上述空闲线程资源处理上述目标任务。
在一些可行的实施方式中,在修改上述第一线程资源信号量以增加上述第一线程资源信号量所指示的线程资源数量,并修改上述第一子线程池对应的一组线程资源信号量中除去上述第一线程资源信号量之外的第二线程资源信号量,以减少上述第二线程资源信号量所指示的线程资源数量之后,确定上述第一线程资源信号量对应的计数器的数值。根据上述计数器显示的数值来确定此时上述第一子线程池中用于执行上述第一任务类型的任务的空闲线程资源数量。此时可根据上述第一子线程池中用于执行上述第一任务类型的任务的空闲数量来确定访问上述执行该类型任务的线程资源数量。
在一些可行的实施方式中,当上述第一子线程池中没有用于执行所上述目标任务的空闲线程资源之后,可以将上述目标任务存储至目标缓存队列以等待上述第一子线程池中的空闲线程资源。针对在目标缓存队列中的上述目标任务,可启动另一个计数器,用于对排队等待中的目标任务进行计数,即某一时刻下目标缓存队列中排队等待的目标任务数为M,则计数器显示的值为M。当上述第一子线程池中出现用于执行上述目标任务的空闲线程资源之后,目标缓存队列中排队等待的目标任务可访问上述第一子线程池中的空闲线程资源,其中访问上述第一子线程池中的空闲线程资源的目标任务数不超过上述第一子线程池中的空闲线程资源数。当有目标缓存队列中的目标任务访问上述第一子线程池中的空闲线程资源数后,上述计数器显示的值减小,减小的数值与目标缓存队列中访问上述第一子线程池中的空闲线程资源的目标任务数一致。
在一些可行的实施方式中,当上述第一子线程池中没有用于执行所上述目标任务的空闲线程资源之后,可以将上述目标任务存储至目标缓存队列以等待上述第一子线程池中的空闲线程资源。针对在目标缓存队列中的上述目标任务,可启动数个计数器,用于对每个目标任务存储至上述目标缓存队列的时长,其中计数器的个数与存储至上述目标缓存队列以等待所述第一子线程池中的空闲线程资源的目标任务数量。当任一目标任务存储至上述目标缓存队列的时长大于或者等于预设时长阈值,且上述第一子线程池中用于执行上述第一任务类型的任务的空闲线程资源数量依然为零时,修改上述第一线程资源信号量以增加上述第一线程资源信号量所指示的线程资源数量,和/或由***根据其检测的其他线程资源信号量对应的计数器显示的数值,即其他线程资源信号量所指示的空闲线程资源的数量,对各子线程池内的空闲线程资源数进行动态分配。其中,上述基于目标人物在目标缓存队列中的等待时间来触发修改第一线程资源信号量以获取用于执行目标任务的线程资源的实现方式,一方面可减少上述目标任务在目标缓存队列中的排队等待时间,另一方面也可降低线程资源信号量的修改次数,从而可节省修改线程资源信号量的资源消耗,同时也可以降低线程资源信号量的修改误操作率,适用性更强。
可选的,在一些可行的实施方式中,可在对上述目标任务进行处理的过程中添加自定义操作以增加任务处理的灵活性,上述自定义操作包括但不限于执行句柄、函数命令以及脚本等操作。例如,在再次接收目标任务触发的任务处理请求之后添加配置线程资源信号量的执行句柄,实现对线程资源信号量的重新配置以动态分配各子线程池内的空闲线程资源。还可以在基于上述空闲线程资源处理上述目标任务的过程中添加监控脚本,以动态监控各子线程池内的空闲线程资源处理上述目标任务的工作状态,及时告警,操作方式多样。
S8、当上述目标任务处理完成时释放上述空闲线程资源,并修改上述第一线程资源信号量以将上述第一线程资源信号量所指示的上述第一子线程池中用于执行所述第一任务类型的任务的空闲线程资源数量加一。
在一些可行的实施方式中,在基于上述空闲线程资源处理完成上述目标任务之后,可释放上述第一子线程池中用于执行上述目标任务的空闲线程资源,并修改上述第一线程资源信号量以将上述第一线程资源信号量所指示的上述第一子线程池中用于执行所述第一任务类型的任务的空闲线程资源数量加一。此时与上述第一线程资源信号量对应的计数器显示的数值增加,增加的数值与上述第一子线程池中用于执行上述目标任务之后被释放的空闲线程资源的数量。需要说明的是,在基于上述空闲线程资源处理上述目标任务之后,若没有目标任务发出处理请求,和/或上述目标缓存队列中没有排队等待的目标任务,则可销毁上述空闲线程资源,以免造成线程资源的浪费以及随之带来的***性能损耗。
在本发明实施例中,可基于目标任务的不同任务类型,通过线程资源信号量的控制实现对用于执行各任务类型的任务的线程资源的动态分配,可增加基于线程资源处理各任务类型的任务的操作灵活性。同时,通过对线程资源的灵活调用,可在极大程度上避免了目标任务在线程池中可能出现任务阻塞和/或线程资源调度冲突等问题而导致任务处理速度缓慢的情况,适用性更高。此外,及时释放空闲线程资源不仅提高了线程资源的利用率,也可减少目标任务在目标缓存队列中的等待时间,提高了任务处理的效率。
参见图3,图3是发明实施例提供的任务处理装置的结构示意图。本发明实施例提供的任务处理装置包括:
接收单元91,用于接收目标任务触发的任务处理请求。
确定单元92,用于基于上述接收单元91接收的上述任务处理请求确定上述目标任务的第一任务类型,并根据上述第一任务类型确定第一线程资源信号量。
上述确定单元92,还用于根据上述第一线程资源信号量确定第一子线程池中用于执行上述第一任务类型的任务的空闲线程资源数量。
执行单元95,用于若上述确定单元92确定的上述用于执行上述第一任务类型的任务的空闲线程资源数量不为零,则确定上述第一子线程池中用于执行上述目标任务的空闲线程资源,并基于上述空闲线程资源处理上述目标任务。
在一些可行的实施方式中,上述任务处理装置还包括:
生成单元93,用于将包含多个线程资源的线程池划分为多个子线程池,其中一个子线程池中至少包括一个线程资源,上述多个子线程池中至少包括上述第一子线程池。
上述生成单元93,还用于设定上述多个子线程池中各个子线程池对应的一组线程资源信号量,其中,任一子线程池对应的一组线程资源信号量中的一个线程资源信号量,用于指示上述任一子线程池中用于执行一种任务类型的任务的空闲线程资源数量;
其中,上述第一子线程池对应的一组线程资源信号量中至少包括上述第一线程资源信号量。
在一些可行的实施方式中,上述任务处理装置还包括:
配置单元94,用于修改上述第一线程资源信号量以将上述第一线程资源信号量所指示的上述第一子线程池中用于执行上述第一任务类型的任务的空闲线程资源数量减一。
在一些可行的实施方式中,上述确定单元92,还用于若上述第一子线程池中用于执行上述第一任务类型的任务的空闲线程资源数量为零,则确定上述第一子线程池中没有用于执行上述目标任务的空闲线程资源;
上述配置单元94,还用于修改上述第一线程资源信号量以增加上述第一线程资源信号量所指示的线程资源数量,并修改上述第一子线程池对应的一组线程资源信号量中除去上述第一线程资源信号量之外的第二线程资源信号量,以减少上述第二线程资源信号量所指示的线程资源数量,其中,上述第二线程资源信号量用于指示上述第一子线程池中用于执行第二任务类型的任务的线程资源数量;
上述执行单元95,还用于根据增加后的上述第一线程资源信号量所指示的空闲线程资源数量从上述第一子线程池中确定出用于执行上述第一任务类型的任务的空闲线程资源,并基于上述空闲线程资源处理上述目标任务。
在一些可行的实施方式中,上述执行单元95,还用于将上述目标任务存储至目标缓存队列以等待上述第一子线程池中的空闲线程资源;
若上述目标任务存储至上述目标缓存队列的时长大于或者等于预设时长阈值,且上述第一子线程池中用于执行上述第一任务类型的任务的空闲线程资源数量依然为零,则执行修改上述第一线程资源信号量以增加上述第一线程资源信号量所指示的线程资源数量的步骤。
在一些可行的实施方式中,上述配置单元94,还用于当上述目标任务处理完成时释放上述空闲线程资源,并修改上述第一线程资源信号量以将上述第一线程资源信号量所指示的上述第一子线程池中用于执行上述第一任务类型的任务的空闲线程资源数量加一。
具体实现中,上述任务处理装置可通过其内置的各个功能模块执行如上图1至图2中各个步骤所提供的实现方式。例如,上述接收单元91可用于执行上述各个步骤中接收目标任务触发的任务处理请求等实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。上述确定单元92可用于执行上述各个步骤中基于上述接收单元91接收的上述任务处理请求确定上述目标任务的第一任务类型,并根据上述第一任务类型确定第一线程资源信号量,以及根据上述第一线程资源信号量确定第一子线程池中用于执行上述第一任务类型的任务的空闲线程资源数量等实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。上述生成单元93可用于执行上述各个步骤中将包含多个线程资源的线程池划分为多个子线程池,其中一个子线程池中至少包括一个线程资源,上述多个子线程池中至少包括上述第一子线程池,以及设定上述多个子线程池中各个子线程池对应的一组线程资源信号量等实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。上述配置单元94可用于执行上述各个步骤中修改上述第一线程资源信号量以将上述第一线程资源信号量所指示的上述第一子线程池中用于执行上述第一任务类型的任务的空闲线程资源数量减一,以及若上述第一子线程池中用于执行上述第一任务类型的任务的空闲线程资源数量为零,则确定上述第一子线程池中没有用于执行上述目标任务的空闲线程资源等实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。上述执行单元95可用于执行上述各个步骤中若上述确定单元92确定的上述用于执行上述第一任务类型的任务的空闲线程资源数量不为零,则确定上述第一子线程池中用于执行上述目标任务的空闲线程资源,并基于上述空闲线程资源处理上述目标任务等实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。
在本发明实施例中,任务处理装置可基于目标任务的不同任务类型,通过线程资源信号量的控制实现对用于执行各任务类型的任务的线程资源的动态分配,可增加基于线程资源处理各任务类型的任务的操作灵活性。同时,任务处理装置通过对线程资源的灵活调用,可在极大程度上避免了目标任务在线程池中可能出现任务阻塞和/或线程资源调度冲突等问题而导致任务处理速度缓慢的情况,适用性更高。此外,任务处理装置可及时释放空闲线程资源不仅提高了线程资源的利用率,也可减少目标任务在目标缓存队列中的等待时间,提高了任务处理的效率。
参见图4,图4是本发明实施例提供的终端设备的结构示意图。如图4所示,本发明实施例中的终端设备可以包括:一个或多个处理器1001和存储器1002。上述处理器1001和存储器1002通过总线1003连接。存储器1002用于存储计算机程序,该计算机程序包括程序指令,处理器1001用于执行存储器1002存储的程序指令,执行如下操作:
接收目标任务触发的任务处理请求;
基于上述任务处理请求确定上述目标任务的第一任务类型,并根据上述第一任务类型确定第一线程资源信号量;
根据上述第一线程资源信号量确定第一子线程池中用于执行上述第一任务类型的任务的空闲线程资源数量;
若上述用于执行上述第一任务类型的任务的空闲线程资源数量不为零,则确定上述第一子线程池中用于执行上述目标任务的空闲线程资源,并基于上述空闲线程资源处理上述目标任务。
在一些可行的实施方式中,上述处理器1001用于:
将包含多个线程资源的线程池划分为多个子线程池,其中一个子线程池中至少包括一个线程资源,上述多个子线程池中至少包括上述第一子线程池;
设定上述多个子线程池中各个子线程池对应的一组线程资源信号量,其中,任一子线程池对应的一组线程资源信号量中的一个线程资源信号量,用于指示上述任一子线程池中用于执行一种任务类型的任务的空闲线程资源数量;
其中,上述第一子线程池对应的一组线程资源信号量中至少包括上述第一线程资源信号量。
在一些可行的实施方式中,上述处理器1001还用于:
修改上述第一线程资源信号量以将上述第一线程资源信号量所指示的上述第一子线程池中用于执行上述第一任务类型的任务的空闲线程资源数量减一。
在一些可行的实施方式中,上述处理器1001还用于:
若上述第一子线程池中用于执行上述第一任务类型的任务的空闲线程资源数量为零,则确定上述第一子线程池中没有用于执行上述目标任务的空闲线程资源;
修改上述第一线程资源信号量以增加上述第一线程资源信号量所指示的线程资源数量,并修改上述第一子线程池对应的一组线程资源信号量中除去上述第一线程资源信号量之外的第二线程资源信号量,以减少上述第二线程资源信号量所指示的线程资源数量,其中,上述第二线程资源信号量用于指示上述第一子线程池中用于执行第二任务类型的任务的线程资源数量;
根据增加后的上述第一线程资源信号量所指示的空闲线程资源数量从上述第一子线程池中确定出用于执行上述第一任务类型的任务的空闲线程资源,并基于上述空闲线程资源处理上述目标任务。
在一些可行的实施方式中,上述处理器1001还用于:
将上述目标任务存储至目标缓存队列以等待上述第一子线程池中的空闲线程资源;
若上述目标任务存储至上述目标缓存队列的时长大于或者等于预设时长阈值,且上述第一子线程池中用于执行上述第一任务类型的任务的空闲线程资源数量依然为零,则执行修改上述第一线程资源信号量以增加上述第一线程资源信号量所指示的线程资源数量的步骤。
在一些可行的实施方式中,上述处理器1001还用于:
当上述目标任务处理完成时释放上述空闲线程资源,并修改上述第一线程资源信号量以将上述第一线程资源信号量所指示的上述第一子线程池中用于执行上述第一任务类型的任务的空闲线程资源数量加一。
应当理解,在一些可行的实施方式中,上述处理器1001可以是中央处理单元(central processing unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integratedcircuit,ASIC)、现成可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
该存储器1002可以包括只读存储器和随机存取存储器,并向处理器1001提供指令和数据。存储器1002的一部分还可以包括非易失性随机存取存储器。例如,存储器1002还可以存储设备类型的信息。
具体实现中,上述终端设备可通过其内置的各个功能模块执行如上述图1至图2中各个步骤所提供的实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。
在本发明实施例中,终端设备可基于目标任务的不同任务类型,通过线程资源信号量的控制实现对用于执行各任务类型的任务的线程资源的动态分配,可增加基于线程资源处理各任务类型的任务的操作灵活性。同时,终端设备通过对线程资源的灵活调用,可在极大程度上避免了目标任务在线程池中可能出现任务阻塞和/或线程资源调度冲突等问题而导致任务处理速度缓慢的情况,适用性更高。此外,终端设备可及时释放空闲线程资源不仅提高了线程资源的利用率,也可减少目标任务在目标缓存队列中的等待时间,提高了任务处理的效率。
本发明实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令被处理器执行时实现图1至图2中各个步骤所提供的方法,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。
上述计算机可读存储介质可以是前述任一实施例提供的任务处理装置或者上述终端设备的内部存储单元,例如电子设备的硬盘或内存。该计算机可读存储介质也可以是该电子设备的外部存储设备,例如该电子设备上配备的插接式硬盘,智能存储卡(smartmedia card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。上述计算机可读存储介质还可以包括磁碟、光盘、只读存储记忆体(read-only memory,ROM)或随机存储记忆体(random access memory,RAM)等。进一步地,该计算机可读存储介质还可以既包括该电子设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该电子设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本申请的权利要求书和说明书及附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置展示该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (10)
1.一种基于线程资源的任务处理方法,其特征在于,包括:
接收目标任务触发的任务处理请求;
基于所述任务处理请求确定所述目标任务的第一任务类型,并根据所述第一任务类型确定第一线程资源信号量;
根据所述第一线程资源信号量确定第一子线程池中用于执行所述第一任务类型的任务的空闲线程资源数量;
若所述用于执行所述第一任务类型的任务的空闲线程资源数量不为零,则确定所述第一子线程池中用于执行所述目标任务的空闲线程资源,并基于所述空闲线程资源处理所述目标任务。
2.根据权利要求1所述的方法,其特征在于,所述接收目标任务触发的任务处理请求之前,所述方法还包括:
将包含多个线程资源的线程池划分为多个子线程池,其中一个子线程池中至少包括一个线程资源,所述多个子线程池中至少包括所述第一子线程池;
设定所述多个子线程池中各个子线程池对应的一组线程资源信号量,其中,任一子线程池对应的一组线程资源信号量中的一个线程资源信号量,用于指示所述任一子线程池中用于执行一种任务类型的任务的空闲线程资源数量;
其中,所述第一子线程池对应的一组线程资源信号量中至少包括所述第一线程资源信号量。
3.根据权利要求1或2所述的方法,其特征在于,所述基于所述空闲线程资源处理所述目标任务之后,所述方法还包括:
修改所述第一线程资源信号量以将所述第一线程资源信号量所指示的所述第一子线程池中用于执行所述第一任务类型的任务的空闲线程资源数量减一。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
若所述第一子线程池中用于执行所述第一任务类型的任务的空闲线程资源数量为零,则确定所述第一子线程池中没有用于执行所述目标任务的空闲线程资源;
修改所述第一线程资源信号量以增加所述第一线程资源信号量所指示的线程资源数量,并修改所述第一子线程池对应的一组线程资源信号量中除去所述第一线程资源信号量之外的第二线程资源信号量,以减少所述第二线程资源信号量所指示的线程资源数量,其中,所述第二线程资源信号量用于指示所述第一子线程池中用于执行第二任务类型的任务的线程资源数量;
根据增加后的所述第一线程资源信号量所指示的空闲线程资源数量从所述第一子线程池中确定出用于执行所述第一任务类型的任务的空闲线程资源,并基于所述空闲线程资源处理所述目标任务。
5.根据权利要求4所述的方法,其特征在于,所述确定所述第一子线程池中没有用于执行所述目标任务的空闲线程资源之后,所述方法还包括:
将所述目标任务存储至目标缓存队列以等待所述第一子线程池中的空闲线程资源;
若所述目标任务存储至所述目标缓存队列的时长大于或者等于预设时长阈值,且所述第一子线程池中用于执行所述第一任务类型的任务的空闲线程资源数量依然为零,则执行修改所述第一线程资源信号量以增加所述第一线程资源信号量所指示的线程资源数量的步骤。
6.根据权利要求4所述的方法,其特征在于,所述基于所述空闲线程资源处理所述目标任务之后,所述方法还包括:
当所述目标任务处理完成时释放所述空闲线程资源,并修改所述第一线程资源信号量以将所述第一线程资源信号量所指示的所述第一子线程池中用于执行所述第一任务类型的任务的空闲线程资源数量加一。
7.一种基于线程资源的任务处理装置,其特征在于,包括:
接收单元,用于接收目标任务触发的任务处理请求;
确定单元,用于基于所述接收单元接收的所述任务处理请求确定所述目标任务的第一任务类型,并根据所述第一任务类型确定第一线程资源信号量;
所述确定单元,还用于根据所述第一线程资源信号量确定第一子线程池中用于执行所述第一任务类型的任务的空闲线程资源数量;
执行单元,用于若所述确定单元确定的所述用于执行所述第一任务类型的任务的空闲线程资源数量不为零,则确定所述第一子线程池中用于执行所述目标任务的空闲线程资源,并基于所述空闲线程资源处理所述目标任务。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
生成单元,用于将包含多个线程资源的线程池划分为多个子线程池,其中一个子线程池中至少包括一个线程资源,所述多个子线程池中至少包括所述第一子线程池;
配置单元,用于修改所述第一线程资源信号量以将所述第一线程资源信号量所指示的所述第一子线程池中用于执行所述第一任务类型的任务的空闲线程资源数量减一。
9.一种终端设备,其特征在于,包括处理器和存储器,所述处理器和存储器相互连接;
所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求1-6任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910186590.4A CN110018892A (zh) | 2019-03-12 | 2019-03-12 | 基于线程资源的任务处理方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910186590.4A CN110018892A (zh) | 2019-03-12 | 2019-03-12 | 基于线程资源的任务处理方法及相关装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110018892A true CN110018892A (zh) | 2019-07-16 |
Family
ID=67189530
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910186590.4A Pending CN110018892A (zh) | 2019-03-12 | 2019-03-12 | 基于线程资源的任务处理方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110018892A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110515710A (zh) * | 2019-08-06 | 2019-11-29 | 深圳市随手科技有限公司 | 异步任务调度方法、装置、计算机设备和存储介质 |
CN110737534A (zh) * | 2019-10-29 | 2020-01-31 | 京东数字科技控股有限公司 | 任务的处理方法、装置和服务器 |
CN111240762A (zh) * | 2020-01-10 | 2020-06-05 | 珠海格力电器股份有限公司 | 线程管理方法、存储介质及电子设备 |
CN111614758A (zh) * | 2020-05-20 | 2020-09-01 | 浩云科技股份有限公司 | 一种码流转发方法、装置、可读存储介质及计算设备 |
CN111767125A (zh) * | 2020-06-15 | 2020-10-13 | 杭州数梦工场科技有限公司 | 任务执行方法、装置、电子设备、存储介质 |
CN112148493A (zh) * | 2020-09-30 | 2020-12-29 | 武汉中科通达高新技术股份有限公司 | 一种流媒体任务管理方法及装置、数据服务器 |
CN113449316A (zh) * | 2020-03-27 | 2021-09-28 | 武汉瓯越网视有限公司 | 一种程序的加密解密方法、装置和可读存储介质 |
CN113672364A (zh) * | 2021-08-02 | 2021-11-19 | 北京奇艺世纪科技有限公司 | 任务调度方法、装置、电子设备及存储介质 |
CN116719626A (zh) * | 2023-08-02 | 2023-09-08 | 成都芯软科技股份公司 | 海量数据拆分的多线程并行处理方法及其处理*** |
CN117453363A (zh) * | 2023-11-06 | 2024-01-26 | 北京明朝万达科技股份有限公司 | 一种附件处理方法及装置、电子设备、存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572277A (zh) * | 2014-12-17 | 2015-04-29 | 大唐移动通信设备有限公司 | 一种线程流控方法和装置 |
CN105912386A (zh) * | 2016-05-03 | 2016-08-31 | 深圳市永兴元科技有限公司 | 线程管理方法及*** |
CN107341050A (zh) * | 2016-04-28 | 2017-11-10 | 北京京东尚科信息技术有限公司 | 基于动态线程池的服务处理方法和装置 |
-
2019
- 2019-03-12 CN CN201910186590.4A patent/CN110018892A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572277A (zh) * | 2014-12-17 | 2015-04-29 | 大唐移动通信设备有限公司 | 一种线程流控方法和装置 |
CN107341050A (zh) * | 2016-04-28 | 2017-11-10 | 北京京东尚科信息技术有限公司 | 基于动态线程池的服务处理方法和装置 |
CN105912386A (zh) * | 2016-05-03 | 2016-08-31 | 深圳市永兴元科技有限公司 | 线程管理方法及*** |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110515710A (zh) * | 2019-08-06 | 2019-11-29 | 深圳市随手科技有限公司 | 异步任务调度方法、装置、计算机设备和存储介质 |
CN110737534A (zh) * | 2019-10-29 | 2020-01-31 | 京东数字科技控股有限公司 | 任务的处理方法、装置和服务器 |
CN111240762A (zh) * | 2020-01-10 | 2020-06-05 | 珠海格力电器股份有限公司 | 线程管理方法、存储介质及电子设备 |
CN113449316A (zh) * | 2020-03-27 | 2021-09-28 | 武汉瓯越网视有限公司 | 一种程序的加密解密方法、装置和可读存储介质 |
CN111614758A (zh) * | 2020-05-20 | 2020-09-01 | 浩云科技股份有限公司 | 一种码流转发方法、装置、可读存储介质及计算设备 |
CN111614758B (zh) * | 2020-05-20 | 2023-05-02 | 浩云科技股份有限公司 | 一种码流转发方法、装置、可读存储介质及计算设备 |
CN111767125A (zh) * | 2020-06-15 | 2020-10-13 | 杭州数梦工场科技有限公司 | 任务执行方法、装置、电子设备、存储介质 |
CN111767125B (zh) * | 2020-06-15 | 2023-07-25 | 杭州数梦工场科技有限公司 | 任务执行方法、装置、电子设备、存储介质 |
CN112148493A (zh) * | 2020-09-30 | 2020-12-29 | 武汉中科通达高新技术股份有限公司 | 一种流媒体任务管理方法及装置、数据服务器 |
CN113672364A (zh) * | 2021-08-02 | 2021-11-19 | 北京奇艺世纪科技有限公司 | 任务调度方法、装置、电子设备及存储介质 |
CN113672364B (zh) * | 2021-08-02 | 2023-09-01 | 北京奇艺世纪科技有限公司 | 任务调度方法、装置、电子设备及存储介质 |
CN116719626A (zh) * | 2023-08-02 | 2023-09-08 | 成都芯软科技股份公司 | 海量数据拆分的多线程并行处理方法及其处理*** |
CN116719626B (zh) * | 2023-08-02 | 2023-11-03 | 成都芯软科技股份公司 | 海量数据拆分的多线程并行处理方法及其处理*** |
CN117453363A (zh) * | 2023-11-06 | 2024-01-26 | 北京明朝万达科技股份有限公司 | 一种附件处理方法及装置、电子设备、存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110018892A (zh) | 基于线程资源的任务处理方法及相关装置 | |
CN110113387A (zh) | 一种基于分布式批量处理***的处理方法、装置及*** | |
CN105893126B (zh) | 一种任务调度方法及装置 | |
JP6294586B2 (ja) | 命令スレッドを組み合わせた実行の管理システムおよび管理方法 | |
CN104750543B (zh) | 线程创建方法、业务请求处理方法及相关设备 | |
EP2701074B1 (en) | Method, device, and system for performing scheduling in multi-processor core system | |
CN109710400A (zh) | 线程资源分组的方法及装置 | |
CN108595282A (zh) | 一种高并发消息队列的实现方法 | |
CN108319495B (zh) | 任务处理方法及装置 | |
WO2017048420A1 (en) | Efficient scheduling of multi-versioned tasks | |
CN106569891B (zh) | 一种存储***中任务调度执行的方法和装置 | |
CN110532067A (zh) | 事件处理方法、装置、设备及存储介质 | |
CN104468638B (zh) | 一种分布式数据处理方法及*** | |
CN109298951A (zh) | Celery任务的执行方法及终端设备 | |
CN110109752A (zh) | 一种任务分配方法、装置、电子设备及存储介质 | |
CN109343972A (zh) | 任务处理方法及终端设备 | |
WO2023274278A1 (zh) | 一种资源调度的方法、装置及计算节点 | |
IL264794B2 (en) | Scheduling of tasks on a multi-processor device | |
CN110221914B (zh) | 文件处理方法及装置 | |
CN110011936B (zh) | 基于多核处理器的线程调度方法及装置 | |
CN109582467A (zh) | 一种存储***中io请求的处理方法、***及相关装置 | |
CN109819674B (zh) | 计算机存储介质、嵌入式调度方法及*** | |
CN108984321A (zh) | 一种移动终端及其进程间通信的限制方法、存储介质 | |
CN109032812A (zh) | 一种移动终端及其进程间通信的限制方法、存储介质 | |
CN111309494A (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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190716 |