CN113986502A - 线程池管理方法、装置、计算机终端及存储介质 - Google Patents
线程池管理方法、装置、计算机终端及存储介质 Download PDFInfo
- Publication number
- CN113986502A CN113986502A CN202111269518.1A CN202111269518A CN113986502A CN 113986502 A CN113986502 A CN 113986502A CN 202111269518 A CN202111269518 A CN 202111269518A CN 113986502 A CN113986502 A CN 113986502A
- Authority
- CN
- China
- Prior art keywords
- task
- thread
- pool management
- thread pool
- threads
- 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
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/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/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- 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
- G06F9/5016—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 the resource being the memory
-
- 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
- G06F9/5022—Mechanisms to release resources
-
- 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/542—Event management; Broadcasting; Multicasting; Notifications
-
- 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
-
- 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/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Abstract
本发明实施例公开了一种线程池管理方法、装置、终端及存储介质,其中该方法包括:创建若干数量的任务线程,然后将所述若干数量的任务线程添加到线程池管理队列中,并监听是否有任务请求消息。当接收到任务请求消息时,创建对应的任务对象,任务对象包括对象事件循环和与当前任务相关的执行函数。从线程池管理队列为所述任务对象分配一个任务线程,将对象事件循环托管给所述任务线程,以使任务线程调用所述执行函数以执行所述当前任务。通过上述面向对象的线程池管理方法,使得线程可以更好的为上层应用服务。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种线程池管理方法、装置、计算机终端及存储介质。
背景技术
目前广泛使用的线程池,大多是为了执行某个耗时任务,避免反复创建和销毁线程使用。然而,在面向对象的设计中,有可能某个线程,需要独立承担某个对象的所有任务,而且这些任务又不是连续的,是孤立零散的,使得线程会多次调度,所以会出现费时、或者是效率不高,又或是占用太多资源等问题。
发明内容
有鉴于此,本申请提供了一种线程池管理方法,包括:
创建若干数量的任务线程,然后将所述若干数量的任务线程添加到线程池管理队列中,并监听是否有任务请求消息;
当接收到所述任务请求消息时,创建对应的任务对象,所述任务对象包括对象事件循环和与当前任务相关的执行函数;
从所述线程池管理队列为所述任务对象分配一个任务线程,将所述对象事件循环托管给所述任务线程,以使所述任务线程调用所述执行函数以执行所述当前任务。
进一步的,所述任务线程包括线程事件循环,当创建所述任务线程后,启动所述线程事件循环,并使所述任务线程进入休眠状态;
当所述任务线程被分配给所述任务对象后,通过所述线程事件循环开始执行所述任务对象的所述对象事件循环。
进一步的,所述创建若干数量的任务线程,之前还包括:
创建一个主线程,所述主线程包括主事件循环,所述主事件循环用于执行创建若干数量的任务线程,然后将所述若干数量的任务线程添加到线程池管理队列中,并监听是否有任务请求消息的操作。
进一步的,在将所述对象事件循环托管给所述任务线程后,还包括:
所述任务线程实时监听任务执行过程中产生的任务响应消息,并根据所述任务响应消息,调用对应的执行函数。
进一步的,为所述任务对象分配一个任务线程之前,还包括:
判断所述线程池管理队列中已分配的任务线程数目是否达到最大线程数,若是则阻塞等待,若否,则执行为所述任务对象分配任务线程的操作。
进一步的,还包括:
当执行的任务结束后,解除所述任务线程与所述任务对象的关联并使所述任务线程进入休眠状态,以及销毁所述任务对象。
进一步的,所述任务请求消息由上层应用发出,当退出所述上层应用时,调用注销函数来注销所述线程池。
进一步的,本申请的实施例还提供一种线程池管理装置,包括:
线程池模块,创建若干数量的任务线程,然后将所述若干数量的任务线程添加到线程池管理队列中,并监听是否有任务请求消息;
任务对象模块,当接收到所述任务请求消息时,创建对应的任务对象,所述任务对象包括对象事件循环和与当前任务相关的执行函数;
分配执行模块,从所述线程池管理队列为所述任务对象分配一个任务线程,将所述对象事件循环托管给所述任务线程,以使所述任务线程调用所述执行函数以执行所述当前任务。
进一步的,本申请的实施例还提供一种计算机终端,包括处理器和存储器,所述存储器存储有计算机程序,所述计算机程序在所述处理器上运行时执行上述的线程池管理方法。
进一步的,本申请的实施例还提供一种可读存储介质,其存储有计算机程序,所述计算机程序在所述处理器上运行时执行上述的线程池管理方法。
本申请提供一种线程池管理方法,通过创建若干数量的任务线程,然后将所述若干数量的任务线程添加到线程池管理队列中,并监听是否有任务请求消息;当接收到所述任务请求消息时,创建对应的任务对象,所述任务对象包括对象事件循环和与当前任务相关的执行函数;从所述线程池管理队列为所述任务对象分配一个任务线程,将所述对象事件循环托管给所述任务线程,以使所述任务线程调用所述执行函数以执行所述当前任务。该方法使得线程处理任务时不再像以往一样单单面向过程,而是可以面向对象,使得在处理繁琐不连续的任务时可以不用频繁的注销和生成线程,节省了资源,提高了反应速度,能够更好的服务于上层应用。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对本发明保护范围的限定。在各个附图中,类似的构成部分采用类似的编号。
图1示出了本申请实施例线程池管理方法的流程示意图;
图2示出了本申请实施例线程池管理方法数据的结构示意图;
图3示出了本申请实施例中任务对象的一种示意图;
图4示出了本申请实施例线程池管理装置的一种示意图。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
在下文中,可在本发明的各种实施例中使用的术语“包括”、“具有”及其同源词仅意在表示特定特征、数字、步骤、操作、元件、组件或前述项的组合,并且不应被理解为首先排除一个或更多个其它特征、数字、步骤、操作、元件、组件或前述项的组合的存在或增加一个或更多个特征、数字、步骤、操作、元件、组件或前述项的组合的可能性。
此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
除非另有限定,否则在这里使用的所有术语(包括技术术语和科学术语)具有与本发明的各种实施例所属领域普通技术人员通常理解的含义相同的含义。所述术语(诸如在一般使用的词典中限定的术语)将被解释为具有与在相关技术领域中的语境含义相同的含义并且将不被解释为具有理想化的含义或过于正式的含义,除非在本发明的各种实施例中被清楚地限定。
实施例1
本申请提供了一种线程池管理方法,本实施例中,该方法基于Qt编程中的Qthread,具体参照图1来理解。
示范性地,该线程池管理方法包括:
步骤S100,创建若干数量的任务线程,然后将所述若干数量的任务线程添加到线程池管理队列中,并监听是否有任务请求消息。
当一个程序启动,首先会创建(用交底中的词,创建)该程序的主线程,该主线程拥有自己的主事件循环,线程池便由该主事件循环维护。主线程主要用于处理组件类和几个相关类的工作;任务线程为工作线程,主要负责处理主线程分配的任务,对于程序来讲,只要在运行并且和用户交互,就会时时刻刻产生需要线程处理的任务,比如在交互界面移动鼠标时的特效、鼠标的点击以及点击所触发的事件等,都需要线程来处理,因此主线程会创建若干数量的任务线程,这些任务线程都有自己的任务事件循环,在创建之后还会执行start()函数,开始任务线程的事件循环,然后将这些任务线程添加到线程池管理队列中,该线程池管理队列便是线程池,这些处于线程池管理队列的任务线程因为还没有被分配任务,所以都是处于休眠状态。
具体的,任务线程的任务事件循环是由exec()方法实现,其在任务线程内部不断做着循环遍历事件队列的工作,但是这些处于队列中的任务线程没有被分配任务时,这些事件循环实际上没有执行任何程序,可以认为是在一直监听是否有任务消息被发送过来,当有事件驱动时便随时可以被调用。
如图2所示,主线程中创建了n个任务线程,这些任务线程以队列的形式被添加到线程池中,并实时监听是否有事件驱动,在实际程序运行中,事件驱动以任务请求消息的方式体现。
步骤S200,当接收到所述任务请求消息时,创建对应的任务对象,所述任务对象包括对象事件循环和与当前任务相关的执行函数;
结合图3理解,当有任务请求消息时,主线程创建和该任务相关的任务对象,比如一个升级任务,则创建一个升级相关的任务对象,该任务对象包括自己的对象事件循环以及和任务相关的执行函数。其中,这些任务请求消息由上层应用发出,这些消息中包含任务种类和将要执行的任务步骤,在该任务对象的事件循环里包含由这些执行函数构成的具体的执行步骤,比如一个任务中有ABC三个步骤,则可以通过switch或者if条件判断来决定执行哪个步骤。
具体的,比如当有一个升级任务需要执行,则会有一个升级任务的任务请求消息来到主线程,主线程根据消息内容判断任务类别是升级,并且具体到是升级中的步骤是哪个,由此根据程序中的相关升级类来创建一个升级任务对象,该升级类中包括这升级所需的一系列执行函数,如升级前的准备,升级过程中的各种文件校验,升级后的判断等等,这些不同的执行函数在对象事件循环中针对实际升级操作中的不同步骤,并且由不同的判断条件触发。
在实际升级的情况下,上述过程并不会是一个连续的过程,就像升级的过程还会涉及到数据的传输,也会涉及到某些中断事件,也就是说负责处理升级的事件任务会因为各种系统意外,或者操作人员的原因而暂停,使得任务不连续。
一般来讲,线程所处理的任务往往是该任务中最小的步骤单元,比如两个文件的校验,或者一次文件的复制,当执行完后,系统会反馈一个返回值表示任务执行状态,比如成功,失败,或者请求重试之类的,而原本的线程无论任务的成功与否,都会在结束的时候消亡结束生命周期,因此在一次升级任务中,会反复的创建和销毁线程,以实现该任务。
而本实施例中,因为创建了该任务对象,任务对象中包含了该任务所需的执行函数,并且该任务对象由事件驱动,也就是根据任务消息来执行相应的执行函数,并且有自己的事件循环,使得在实际运行过程当中,可以根据外界消息决定执行哪个任务步骤,并且在执行完一个步骤之后,并不会立刻退出,而是持续监听外界的任务响应消息,使得程序可以根据任务执行状态执行正确的步骤。
步骤S300,从所述线程池管理队列为所述任务对象分配一个任务线程,将所述对象事件循环托管给所述任务线程,以使所述任务线程调用所述执行函数以执行所述当前任务。
当任务对象创建之后,便可以为其分配线程,使得计算机有计算资源去执行任务,而实际情况中,计算机资源可能被占用导致没有足够的线程,比如当分配的任务线程数量到达预设数值时,也就是线程池管理队列空了,则不会第一时间分配线程,所请求的任务则会进入等待状态,直到有空余的线程出现,请求的任务才会被分配线程以执行任务。
在任务线程和任务对象分配完毕后,任务对象会将自己的对象事件循环托管给任务线程,可以理解为该任务对象的对象事件循环会在任务线程的任务事件循环中执行,在队列中的任务线程处于休眠状态,其任务事件循环中为空,只是一直监听消息,当任务对象通过movetothread()函数将对象事件循环托管给任务线程时,该任务线程就会接收到相应的任务请求消息,并且接受执行任务对象的事件循环,并根据外界传来的任务请求消息判断当前应该执行该任务的哪个步骤,并调用该步骤相关函数来实现。
在本实施例中,升级任务执行过程当中可以包括A、B和C三个步骤,在一开始任务请求消息除了包括该任务的种类是升级外,也包括了当前步骤是A步骤的消息,由此任务线程在接收任务对象托管之后,会知道自己要执行的步骤A,当步骤A执行完,这类程序都会返回一个状态值,以表示步骤A执行成功失败等状态,系统根据该状态值确认是否要继续执行接下来的步骤B。
需要注意的是,在本实施例中,因为任务对象是有自己的对象事件循环,并且该事件循环在任务线程的任务事件循环中执行的,因此在执行完步骤A并返回状态值后,任务线程依旧存续,不会跳出对象事件循环,除非所执行的步骤已经是最后一个步骤执行了跳出操作,因此在本实施例中,执行完了一个步骤的任务线程不会消亡,而是会挂起等待下一个命令。
当系统判断可以继续执行步骤B时,会继续发送执行步骤B的任务响应消息,主线程接受之后会将该消息发送给该任务线程,任务线程根据该响应消息就继续执行步骤B,否则便挂起等待外界消息,或者直到超时则触发超时机制下的线程消亡操作。也就是说,在本申请的实施例中,可以通过一个线程完成一个不连续的任务。
进一步可选地,当该任务执行结束后,主线程将任务线程和任务对象的关联解除,并销毁任务对象,释放内存,任务线程则回归休眠状态,从队尾回到线程池管理队列。
当不需要线程池时,则将线程池通过注销函数clear()来进行注销,具体的不需要线程池的情况,例如,可以是程序关闭,上层应用停止等情况。
具体的,参考附图2和图3,下面以一个任务的完整周期来描述。
主线程中创建了任务线程后,等待任务请求消息,并根据任务请求消息创建对应的任务对象,然后再给任务对象分配任务线程,其中任务对象基于对应的任务类被创建,该任务对象中包括了该任务相应的执行函数以及自己的事件循环,当该任务对象将事件循环交给任务线程托管时,便可以调用该对象中的执行函数完成任务,并且任何发送给该任务对象的信号都会在该任务线程中响应,这样便实现了由事件来驱动任务。
其中每个不同功能的执行函数可以认为是一个单独任务的解决方案或者任务中的某个步骤,根据外界的任务请求消息个任务响应来触发相应的执行函数来执行该任务,比如上述举例的升级前判断,升级中文件校验和升级后判断是否成功,是否需要因升级修改参数等操作。
当一个任务顺利完成,或外界消息决定停止,或者因为失败多次到达预设值而退出时才会将任务对象销毁,并释放线程,释放的线程回归线程池队列中,进入休眠状态,等待新的对象接入。具体的,可以调用removeThread()函数来释放线程,当不需要线程池时,可调用clear()函数来注销线程池,只要达到销毁任务对象,释放线程即可,本申请对此不做限定。
实施例2
本申请还提供了一种线程池管理装置,如图4所示,所述装置包括线程池模块10,任务对象模块11和分配执行模块12,其中:
线程池模块10,创建若干数量的任务线程,然后将所述若干数量的任务线程添加到线程池管理队列中,并监听是否有任务请求消息;
任务对象模块11,用于当接收到所述任务请求消息时,创建所请求任务的任务对象,所述任务对象包括对象事件循环和与所述任务相关的执行函数;
分配执行模块12,从所述线程池管理队列为所述任务对象分配一个任务线程,将所述对象事件循环托管给所述任务线程,以使所述任务线程调用所述执行函数以执行所述当前任务。
进一步的,本申请的实施例还提供一种计算机终端,包括处理器和存储器,所述存储器存储有计算机程序,所述计算机程序在所述处理器上运行时执行上述实施例中任一项所述的线程池管理方法。
进一步的,本申请的实施例还提供一种可读存储介质,其存储有计算机程序,所述计算机程序在所述处理器上运行时执行上述实施例中任一项所述的线程池管理方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和结构图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,结构图和/或流程图中的每个方框、以及结构图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块或单元可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或更多个模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是智能手机、个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。
Claims (10)
1.一种线程池管理方法,其特征在于,包括:
创建若干数量的任务线程,然后将所述若干数量的任务线程添加到线程池管理队列中,并监听是否有任务请求消息;
当接收到所述任务请求消息时,创建对应的任务对象,所述任务对象包括对象事件循环和与当前任务相关的执行函数;
从所述线程池管理队列为所述任务对象分配一个任务线程,将所述对象事件循环托管给所述任务线程,以使所述任务线程调用所述执行函数以执行所述当前任务。
2.根据权利要求1所述的线程池管理方法,其特征在于,所述任务线程包括线程事件循环,当创建所述任务线程后,启动所述线程事件循环,并使所述任务线程进入休眠状态;
当所述任务线程被分配给所述任务对象后,通过所述线程事件循环开始执行所述任务对象的所述对象事件循环。
3.根据权利要求1所述的线程池管理方法,其特征在于,所述创建若干数量的任务线程,之前还包括:
创建一个主线程,所述主线程包括主事件循环,所述主事件循环用于执行创建若干数量的任务线程,然后将所述若干数量的任务线程添加到线程池管理队列中,并监听是否有任务请求消息的操作。
4.根据权利要求1所述的线程池管理方法,其特征在于,在将所述对象事件循环托管给所述任务线程后,还包括:
所述任务线程实时监听任务执行过程中产生的任务响应消息,并根据所述任务响应消息,调用对应的执行函数。
5.根据权利要求1所述的线程池管理方法,其特征在于,为所述任务对象分配一个任务线程之前,还包括:
判断所述线程池管理队列中已分配的任务线程数目是否达到最大线程数,若是则阻塞等待,若否,则执行为所述任务对象分配任务线程的操作。
6.根据权利要求1所述的线程池管理方法,其特征在于,还包括:
当执行的任务结束后,解除所述任务线程与所述任务对象的关联并使所述任务线程进入休眠状态,以及销毁所述任务对象。
7.根据权利要求1所述的线程池管理方法,其特征在于,所述任务请求消息由上层应用发出,当退出所述上层应用时,调用注销函数来注销所述线程池。
8.一种线程池管理装置,其特征在于,包括:
线程池模块,创建若干数量的任务线程,然后将所述若干数量的任务线程添加到线程池管理队列中,并监听是否有任务请求消息;
任务对象模块,当接收到所述任务请求消息时,创建对应的任务对象,所述任务对象包括对象事件循环和与当前任务相关的执行函数;
分配执行模块,从所述线程池管理队列为所述任务对象分配一个任务线程,将所述对象事件循环托管给所述任务线程,以使所述任务线程调用所述执行函数以执行所述当前任务。
9.一种计算机终端,其特征在于,包括处理器和存储器,所述存储器存储有计算机程序,所述计算机程序在所述处理器上运行时执行权利要求1至7中任一项所述的线程池管理方法。
10.一种可读存储介质,其特征在于,其存储有计算机程序,所述计算机程序在处理器上运行时执行权利要求1至7中任一项所述的线程池管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111269518.1A CN113986502A (zh) | 2021-10-29 | 2021-10-29 | 线程池管理方法、装置、计算机终端及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111269518.1A CN113986502A (zh) | 2021-10-29 | 2021-10-29 | 线程池管理方法、装置、计算机终端及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113986502A true CN113986502A (zh) | 2022-01-28 |
Family
ID=79744183
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111269518.1A Pending CN113986502A (zh) | 2021-10-29 | 2021-10-29 | 线程池管理方法、装置、计算机终端及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113986502A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114546628A (zh) * | 2022-04-22 | 2022-05-27 | 北京奥星贝斯科技有限公司 | 一种线程处理方法、线程管理方法、装置以及设备 |
CN115794449A (zh) * | 2023-02-10 | 2023-03-14 | 中科源码(成都)服务机器人研究院有限公司 | 动态线程池构建方法、远程过程调用方法及装置 |
-
2021
- 2021-10-29 CN CN202111269518.1A patent/CN113986502A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114546628A (zh) * | 2022-04-22 | 2022-05-27 | 北京奥星贝斯科技有限公司 | 一种线程处理方法、线程管理方法、装置以及设备 |
CN115794449A (zh) * | 2023-02-10 | 2023-03-14 | 中科源码(成都)服务机器人研究院有限公司 | 动态线程池构建方法、远程过程调用方法及装置 |
CN115794449B (zh) * | 2023-02-10 | 2023-10-03 | 中科源码(成都)服务机器人研究院有限公司 | 动态线程池构建方法、远程过程调用方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11216324B2 (en) | Query watchdog | |
US10061631B2 (en) | Detecting unresponsiveness of a process | |
US8191072B2 (en) | System and method for shifting workloads across platform in a hybrid system | |
US11941434B2 (en) | Task processing method, processing apparatus, and computer system | |
US5748959A (en) | Method of conducting asynchronous distributed collective operations | |
EP1679602B1 (en) | Shared memory based monitoring for application servers | |
CN113986502A (zh) | 线程池管理方法、装置、计算机终端及存储介质 | |
CN112000455B (zh) | 一种多线程任务处理方法、装置及电子设备 | |
CN108334396B (zh) | 一种数据处理方法和装置、资源组的创建方法和装置 | |
WO2016183553A1 (en) | Query dispatch and execution architecture | |
EP0147574A2 (en) | Resource sharing method between workstations | |
CN102880505A (zh) | 用于后台工作执行的事件聚合 | |
CN109710416B (zh) | 资源调度方法及装置 | |
CN114327894A (zh) | 资源分配方法、装置、电子设备及存储介质 | |
CN117234729B (zh) | 动态内存保护方法、装置、计算机设备及存储介质 | |
US20040025007A1 (en) | Restricting access to a method in a component | |
CN116700901A (zh) | 基于微内核的容器构建与运行系统及方法 | |
US8078907B2 (en) | Failsoft system for multiple CPU system | |
US7603448B2 (en) | System and method for managing client processes | |
CN114816662A (zh) | 应用于Kubernetes的容器编排方法和系统 | |
CN109634721B (zh) | 一种虚拟机与主机的启动通信方法及相关装置 | |
CN113342499A (zh) | 分布式任务调用方法、装置、设备、存储介质、程序产品 | |
JP2007156976A (ja) | 情報処理システム | |
CN113965561B (zh) | 一种基于异步事件驱动的机载文件传输系统 | |
KR102245208B1 (ko) | 다중처리방법 및 그 장치 |
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 |