一种任务处理的方法及任务处理装置与流程

文档序号:17287658发布日期:2019-04-03 03:41阅读:172来源:国知局
一种任务处理的方法及任务处理装置与流程

本申请涉及计算机技术领域,具体涉及一种任务处理的方法及任务处理装置。



背景技术:

传统的多线程服务模型采用的是“即时创建,即时销毁”的策略,即一旦有任务请求到达,就创建一个新的线程并由该线程执行任务,任务执行完成后,则销毁该线程。若任务的执行时间较短,且执行次数频繁,则线程服务器就会处在一个不停的创建线程和销毁线程的状态,这会造成大量的系统开销。线程池技术的出现解决了“即时创建,即时销毁”的策略带来的系统开销问题。

在存储系统中,有一些任务是可以通过异步操作处理的,但是通过同步方式执行,效率较低。



技术实现要素:

本申请实施例提供一种任务处理的方法,可以根据待执行任务的任务类型将待执行任务插入到不同的任务队列,以使得不同的线程池执行该待执行任务,提供了一种异步操作的处理方式,避免可以异步操作的待执行任务通过同步方式执行,提高了任务执行效率,也降低了创建、销毁线程带来的系统开销。

为达到上述目的,本申请实施例提供如下技术方案:

本申请第一方面提供一种任务处理的方法,该方法可以包括:接收待执行任务;根据所述待执行任务的任务类型将所述待执行任务插入对应的任务队列,所述任务队列是预先设置的,所述任务队列用于将所述待执行任务放入对应的线程池,以执行所述待执行任务;当满足预设条件时,调用所述待执行任务对应的回调函数,以得到所述待执行任务的执行结果。

可选地,结合上述第一方面,在第一种可能的实现方式中,所述根据所述待执行任务的任务类型将所述待执行任务插入对应的任务队列,包括:当所述待执行任务的任务类型为紧急任务时,将所述待执行任务插入预先创建的第一任务队列,所述第一任务队列用于将所述待执行任务放入预先创建的第一线程池。

可选地,结合上述第一方面,在第二种可能的实现方式中,所述根据所述待执行任务的任务类型将所述待执行任务插入对应的任务队列,包括:当所述待执行任务的任务类型为非紧急任务时,将所述待执行任务插入预先创建的第二任务队列,所述第二任务队列用于将所述待执行任务放入预先创建的第二线程池。

可选地,结合上述第一方面、第一方面第一种或第二种可能的实现方式,在第三种可能的实现方式中,所述根据所述待执行任务的任务类型将所述待执行任务插入对应的任务队列之后,还包括:从所述待执行任务插入对应的任务队列开始计时;所述当满足预设条件时,调用所述待执行任务对应的回调函数,包括:当所述待执行任务插入对应的任务队列后的时长达到预设时长时,调用所述待执行任务对应的回调函数。

可选地,结合上述第一方面、第一方面第一种或第二种可能的实现方式,在第四种可能的实现方式中,所述根据所述待执行任务的任务类型将所述待执行任务插入对应的任务队列之后,还包括:监听所述待执行任务对应的文件;所述当满足预设条件时,调用所述待执行任务对应的回调函数,包括:当监听到所述待执行任务对应的文件发生输入输出流(inputoutputstream,io)事件时,调用所述待执行任务对应的回调函数。

本申请第二方面提供一种任务处理装置,该装置可以包括:接收单元,用于接收待执行任务;插入单元,用于根据所述接收单元接收的所述待执行任务的任务类型将所述待执行任务插入对应的任务队列,所述任务队列是预先设置的,所述任务队列用于将所述待执行任务放入对应的线程池,以执行所述待执行任务;调用单元,用于当所述插入单元将所述待执行任务插入对应的任务队列之后,且满足预设条件时,调用所述待执行任务对应的回调函数,以得到所述待执行任务的执行结果。

可选地,结合上述第二方面,在第一种可能的实现方式中,所述插入单元包括:第一插入模块,用于当所述待执行任务的任务类型为紧急任务时,将所述待执行任务插入预先创建的第一任务队列,所述第一任务队列用于将所述待执行任务放入预先创建的第一线程池。

可选地,结合上述第二方面,在第二种可能的实现方式中,所述插入单元包括:第二插入模块,用于当所述待执行任务的任务类型为非紧急任务时,将所述待执行任务插入预先创建的第二任务队列,所述第二任务队列用于将所述待执行任务放入预先创建的第二线程池。

本申请第三方面提供一种任务处理装置,该任务处理装置包括:处理器和存储器;该存储器用于存储计算机执行指令,当该任务处理装置运行时,该处理器执行该存储器存储的计算机执行指令,以使该任务处理装置执行如上述第一方面或第一方面任意一种可能实现方式的任务处理的方法。

本申请第四方面提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机可以执行上述第一方面或第一方面任意一种可能实现方式的任务处理的方法。

本申请第五方面提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机可以执行上述第一方面或第一方面任意一种可能实现方式的任务处理的方法。

本申请第六方面提供一种芯片系统,该芯片系统包括处理器,用于支持任务处理装置实现上述第一方面或第一方面任意一种可能的实现方式中所涉及的功能。在一种可能的设计中,芯片系统还包括存储器,该存储器用于保存该任务处理装置必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。

从上述技术方案可知,本申请实施例提供的任务处理的方法可以根据待执行任务的任务类型将待执行任务插入到不同的任务队列,以使得不同的线程池执行该待执行任务,提供了一种异步操作的处理方式,避免可以异步操作的待执行任务通过同步方式执行,提高了任务执行效率。

附图说明

图1是本申请实施例中任务处理的方法一个实施例示意图;

图2是本申请实施例中任务处理的方法另一实施例示意图;

图3是本申请实施例中任务处理的方法另一实施例示意图;

图4是本申请实施例中任务处理装置一个实施例示意图;

图5是本申请实施例中任务处理装置另一实施例示意图。

具体实施方式

下面结合附图,对本申请的实施例进行描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。本领域普通技术人员可知,随着图计算框架的演变和新应用场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。

本申请实施例提供了一种任务处理的方法,可以根据待执行任务的任务类型将待执行任务插入到不同的任务队列,以使得不同的线程池执行该待执行任务,提供了一种异步操作的处理方式,避免可以异步操作的待执行任务通过同步方式执行,提高了任务执行效率。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块。在本申请中出现的对步骤进行的命名或者编号,并不意味着必须按照命名或者编号所指示的时间/逻辑先后顺序执行方法流程中的步骤,已经命名或者编号的流程步骤可以根据要实现的技术目的变更执行次序,只要能达到相同或者相类似的技术效果即可。本申请中所出现的模块的划分,是一种逻辑上的划分,实际应用中实现时可以有另外的划分方式,例如多个模块可以结合成或集成在另一个系统中,或一些特征可以忽略,或不执行,另外,所显示的或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,模块之间的间接耦合或通信连接可以是电性或其他类似的形式,本申请中均不作限定。并且,作为分离部件说明的模块或子模块可以是也可以不是物理上的分离,可以是也可以不是物理模块,或者可以分布到多个电路模块中,可以根据实际的需要选择其中的部分或全部模块来实现本申请方案的目的。

本申请可应用于存储系统的存储程序,为各个存储程序的各个功能模块提供线程池服务。线程是程序执行流的最小单元。一个标准的线程由线程id、当前指令指针、寄存器集合和堆栈组成。线程是进程中的一个实体,是被系统独立调度和分派的基本单位由于线程之间的相互制约,致使线程在运行中呈现出间断性,所以线程也有就绪、阻塞和运行三种基本状态。就绪状态是指线程具备运行的所有条件,逻辑上可以运行,在等待处理机;运行状态是指线程占有处理机正在运行;阻塞状态是指线程在等待一个事件(如某个信号量),逻辑上不可执行。线程池是一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可异步执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价,减少了调度开销。

下面介绍本申请实施例提供的一种任务处理的方法。

图1是本申请实施例中任务处理的方法一个实施例示意图。

如图1所示,本申请实施例中任务处理的方法一个实施例可以包括:

101、任务处理装置接收待执行任务。

在本实施例中,待执行任务可以是各个存储程序的各个功能模块的任务,任务处理装置可以为各个存储程序的各个功能模块的任务提供线程池服务,即接收各个存储程序的各个功能模块发来的任务,并执行该任务。

102、任务处理装置根据待执行任务的任务类型将待执行任务插入对应的任务队列。

在本实施例中,待执行任务的任务类型可能有多种,例如紧急任务和非紧急任务,所以任务处理装置接收到待执行任务之后,先要对待执行任务的任务类型进行判断,不同的任务类型有对应的线程池,该线程池是预先设置的,但是任务处理装置首先需要将待执行任务插入对应的任务队列,该任务队列是预先设置的,由于线程池中的线程数量是有限的,任务队列可用于按照一定的顺序将待执行任务放入对应的线程池中。

需要说明的是,待执行任务的任务类型可能有多种,除上述紧急任务和非紧急任务以外,任务类型可能还有其它更详细的类别划分,所以对应的线程池数量也可能有更多,具体此处不作限定。

103、当满足预设条件时,调用待执行任务对应的回调函数。

在本实施例中,由于本申请实施例提供的任务处理的方法是一种异步操作的处理方式,所以满足预设条件时,需要执行该待执行任务对应的回调函数,以得到该待执行任务的执行结果,使得线程池可以执行任务队列中排队在待执行任务后面的其他任务。在一种具体的实施例中,预设条件可以是待执行任务进入任务队列后的时长是否满足预设时长,或者是否监听到待执行任务对应的文件发生io流事件。当待执行任务进入任务队列的时长达到预设时长时,或者该待执行任务对应的文件发生io流事件时,即满足了预设条件。

需要说明的是,预设条件除上述待执行任务进入任务队列的时长达到预设时长或待执行任务对应的文件发生io流事件以外,还可以是其他不同的条件,具体此处不做限定。

在本实施例中,任务处理装置可以根据待执行任务的任务类型将待执行任务插入到不同的任务队列,以使得不同的线程池执行该待执行任务,提供了一种异步操作的处理方式,避免可以异步操作的待执行任务通过同步方式执行,提高了任务执行效率。

由于待执行任务的任务类型可以分为紧急任务和非紧急任务,下面分别对这两种情况进行说明:

一、待执行任务的任务类型为紧急任务。

图2是本申请实施例中任务处理的方法另一实施例示意图。

如图2所示,本申请实施例中任务处理的方法另一实施例包括:

201、任务处理装置接收待执行任务。

本实施例中步骤201与上述步骤101类似,详细描述可以参考上述步骤101中的相关描述,对此此处不再赘述。

202、当待执行任务的任务类型为紧急任务时,将待执行任务插入预先创建的第一任务队列。

在本实施例中,第一任务队列与第一线程池相对应,该第一线程池是预先创建,用于处理紧急任务的线程池,当第一线程池中没有空闲的线程时,待执行任务需要在第一任务队列中排队,等待空闲线程执行。

203、当满足预设条件时,调用待执行任务对应的回调函数。

本实施例中步骤201与上述步骤101类似,详细描述可以参考上述步骤101中的相关描述,对此此处不再赘述。

在本实施例中,当任务处理装置判断待执行任务的任务类型为紧急任务时,会将该待执行任务插入到第一任务队列,以使得第一任务队列对应的第一线程池执行该待执行任务,该第一线程池的线程数量较多,所以任务执行效率较高,更适合执行紧急任务。

二、待执行任务的任务类型为非紧急任务。

图3是本申请实施例中任务处理的方法另一实施例示意图。

如图3所示,本申请实施例中任务处理的方法另一实施例包括:

301、任务处理装置接收待执行任务。

本实施例中步骤301与上述步骤101类似,详细描述可以参考上述步骤101中的相关描述,对此此处不再赘述。

302、当待执行任务的任务类型为非紧急任务时,将待执行任务插入预先创建的第二任务队列。

在本实施例中,第二任务队列与第二线程池相对应,该第二线程池是预先创建,用于处理非紧急任务的线程池,当第二线程池中没有空闲的线程时,待执行任务需要在第二任务队列中排队,等待空闲线程执行。与第一线程池相比,第二线程池的线程数量较少,所以可用于执行非紧急任务,避免非紧急任务与紧急任务共用同一个线程池时,影响紧急任务的执行。

303、当满足预设条件时,调用待执行任务对应的回调函数。

本实施例中步骤301与上述步骤101类似,详细描述可以参考上述步骤101中的相关描述,对此此处不再赘述。

在本实施例中,当任务处理装置判断待执行任务的任务类型为非紧急任务时,会将该待执行任务插入到第二任务队列,以使得第二任务队列对应的第二线程池执行该待执行任务,该第二线程池的线程数量与第一线程池相比较少,更适合执行非紧急任务,从而避免影响紧急任务的执行效率。

上面对本申请实施例中的任务处理的方法进行了描述,下面对本申请实施例中的任务处理装置进行描述。

图4是本申请实施例中任务处理装置一个实施例示意图。

如图4所示,本申请实施例中任务处理装置一个实施例可以包括:

接收单元401,用于接收待执行任务;

插入单元402,用于根据所述接收单元401接收的所述待执行任务的任务类型将所述待执行任务插入对应的任务队列,所述任务队列是预先设置的,所述任务队列用于将所述待执行任务放入对应的线程池,以执行所述待执行任务;

调用单元403,用于当所述插入单元402将所述待执行任务插入对应的任务队列之后,且满足预设条件时,调用所述待执行任务对应的回调函数,以得到所述待执行任务的执行结果。

可选地,插入单元402还可以进一步包括:

第一插入模块4021,用于当所述待执行任务的任务类型为紧急任务时,将所述待执行任务插入预先创建的第一任务队列,所述第一任务队列用于将所述待执行任务放入预先创建的第一线程池。

可选地,插入单元402还可以进一步包括:

第二插入模块4022,用于当所述待执行任务的任务类型为非紧急任务时,将所述待执行任务插入预先创建的第二任务队列,所述第二任务队列用于将所述待执行任务放入预先创建的第二线程池。

可选地,本申请实施例中任务处理装置一个实施例还可以包括:

计时单元404,用于从所述待执行任务插入对应的任务队列开始计时;

调用单元403还可以进一步包括:

第一调用模块4031,用于当所述待执行任务插入对应的任务队列后的时长达到预设时长时,调用所述待执行任务对应的回调函数。

可选地,本申请实施例中任务处理装置一个实施例还可以包括:

监听单元405,用于监听所述待执行任务对应的文件;

调用单元403还可以进一步包括:

第二调用模块4032,用于当监听单元405监听到所述待执行任务对应的文件发生输入输出io流事件时,调用所述待执行任务对应的回调函数。

上面从模块化功能实体的角度对本申请实施例中的任务处理装置进行描述,下面从硬件处理的角度对本申请实施例中的任务处理装置进行描述。

图5是本申请实施例中任务处理装置另一实施例示意图。

如图5所示,本申请实施例中任务处理装置另一实施例包括:

处理器501、存储器502和总线503。

其中,处理器501对任务处理装置的操作有控制作用,处理器501还可以称为中央处理单元(centralprocessingunit,cpu)。存储器502可以包括只读存储器和随机存取存储器,并向处理器501提供指令和数据。存储器502的一部分还可以包括非易失性随机存取存储器(non-volatilerandomaccessmemory,nvram)。具体的应用中,任务处理装置的各个组件通过总线系统503耦合在一起,其中总线系统503除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线系统503。

存储器502存储了如下的元素,可执行模块或者数据结构,或者它们的子集,或者它们的扩展集:

操作指令:包括各种操作指令,用于实现各种操作;

操作系统:包括各种系统程序,用于实现各种基础业务以及处理基于硬件的任务。

其中,通过调用存储器502存储的操作指令,处理器501,用于执行本申请实施例中任务处理装置执行的步骤。

上述本申请实施例揭示的方法可以应用于处理器501中,或者由处理器501实现。处理器501可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器501中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器501可以是通用处理器、数字信号处理器(digitalsignalprocessing,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器502,处理器501读取存储器502中的信息,结合其硬件完成上述方法的步骤。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。

所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:rom、ram、磁盘或光盘等。

以上对本申请实施例所提供的任务处理的方法以及任务处理装置进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1