一种任务执行线程的处理方法、装置、设备及存储介质与流程

文档序号:16971872发布日期:2019-02-26 18:37阅读:147来源:国知局
一种任务执行线程的处理方法、装置、设备及存储介质与流程

本申请涉及软件技术领域,尤其涉及一种任务执行线程的处理方法、装置、设备及存储介质。



背景技术:

随着智能终端的快速发展,安装在终端上的应用程序所实现的功能越来越完善,相应的,这些应用程序本身的结构也越来越复杂,因此运行起来也更加耗费系统资源。因为直播应用程序中的功能较多,用户在使用直播应用程序直播时,有时会触发多个请求,处理每个请求都需要创建一个线程。例如,当直播应用程序在向服务端作出请求的时候,发出请求的数据需要加密,服务端返回数据时需要解密。客户端会经常触发加解密这一动作,比较耗时,通常的做法是触发时创建线程,在完成请求的动作后系统回收这个线程,如果同时需要做多个请求到服务端,发请求的时候需要加密,这样可能会同时开多个加密的线程,这样不能保证安全,且创建多个线程,使得消耗过多的内存,容易造成客户端卡顿。



技术实现要素:

有鉴于此,本申请提供一种任务执行线程的处理方法、装置、设备及存储介质。

首先,本申请的第一方面提供了一种任务执行线程的处理方法,所述方法具体包括:

接收任务请求指令后,判断所述任务请求指令是否符合预设规则;

若所述任务请求指令符合预设规则,查询是否存在处理所述任务请求指令的任务执行线程;

若不存在处理所述任务请求指令的任务执行线程,则创建新的任务执行线程,在任务请求处理结束时,保存所述任务执行线程。

可选地,在查询是否存在处理所述任务请求指令的任务执行线程之后,还包括:

若存在处理所述任务请求指令的任务执行线程,调用所述任务执行线程处理所述任务请求指令。

可选地,所述预设规则包括所述任务请求指令为预设指令和/或在预设时间内,接收所述任务请求指令的次数超过预设次数阈值;或者,在所述任务执行线程中处理所述任务请求指令的时间超过预设时间阈值。

可选地,所述任务执行线程一次只处理一个任务请求指令。

可选地,所述保存所述任务执行线程,包括:

将任务执行线程的类名和任务执行线程的地址写入映射表中,并将所述映射表保存在内存中。

可选地,所述将所述映射表保存在内存中,包括:

利用nsdictionary集合保存所述映射表,其中,所述映射表中的任务执行线程的类名与nsdictionary集合中的key关联并保存,所述任务执行线程与nsdictionary方法中的value关联并保存。

可选地,所述若存在处理所述任务请求指令的任务执行线程,调用所述任务执行线程处理所述任务请求指令,包括:

若所述nsdictionary集合中存在所述任务执行线程的类名相同的key,获取该key对应的value,以获得所述任务执行线程的执行地址;

根据所述执行地址调用所述任务执行线程处理所述任务请求指令。

根据本申请实施例的第二方面,提供一种任务执行线程的处理装置,所述装置包括判断模块、查询模块和线程创建模块,其中:

判断模块,被配置于接收任务请求指令后,判断所述任务请求指令是否符合预设规则;

所述查询模块,被配置于若所述任务请求指令符合预设规则,查询是否存在处理所述任务请求指令的任务执行线程;

所述线程创建模块,被配置于若不存在处理所述任务请求指令的任务执行线程,则创建新的任务执行线程,在任务请求处理结束时,保存所述任务执行线程。

根据本申请实施例的第三方面,提供一种任务执行线程的处理设备,包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为:

接收任务请求指令后,判断所述任务请求指令是否符合预设规则;

若所述任务请求指令符合预设规则,查询是否存在处理所述任务请求指令的任务执行线程;

若不存在处理所述任务请求指令的任务执行线程,则创建新的任务执行线程,在任务请求处理结束时,保存所述任务执行线程。

进一步地,本申请还提供了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现权利要求1至7任一所述方法的步骤。

本申请的实施例提供的技术方案可以包括以下有益效果:

本申请通过将需要频繁处理任务请求指令的任务执行线程保存起来,当接收到这些频率较高的任务请求指令时,调用已保存的任务执行线程,将相同的任务请求指令放在同一个任务执行线程中处理,减少创建任务执行线程的次数,释放更多的内存,减少客户端卡顿。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。

附图说明

图1为本申请根据一示例性实施例示出的一种方法的实施例流程图;

图2为本申请根据一示例性实施例示出的一种装置的实施例的示意图;

图3为本申请根据一示例性实施例提供一种任务执行线程的处理设备的示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

由于客户端在运行程序过程中,会频繁的触发某一个事件,但是系统每次都会创建一个线程去处理这个事件,事件处理完成后系统便将这个线程回收。例如,应用程序在运行过程中,会经常触发加解密这一动作,线程在处理加解密这一动作时比较耗时,通常的做法是触发时创建线程,在完成请求的动作后系统回收这个线程,如果同时需要做多个请求到服务端,发请求的时候需要加密,这样可能会同时开多个加密的线程,这样不能保证线程的安全,且创建多个线程,使得消耗过多的内存,容易造成客户端卡顿。因此,本申请提供了一种任务执行线程的处理方法,该方法的流程图如图1所示,具体包括:

s101、接收任务请求指令后,判断所述任务请求指令是否符合预设规则;

s102、若所述任务请求指令符合预设规则,查询是否存在处理所述任务请求指令的任务执行线程;

s103、若不存在处理所述任务请求指令的任务执行线程,则创建新的任务执行线程,在任务请求处理结束时,保存所述任务执行线程。

本申请所提供的任务执行线程的处理方法可以应用在智能设备中,智能设备可以是智能手机、平板电脑、pda(personaldigitalassistant,个人数字助理)、电子书阅读器、多媒体播放器等等。

通常情况下,ios系统不允许超过六十个子线程,为了客户端线程数量不超过这个限制,把常见的耗时的操作和频繁触发的动作放在一个线程中处理,不需要重复创建子线程。可以在应用程序启动时就为该应用程序中已知的频繁的任务请求指令或者处理时间比较长的任务请求指令创建任务执行线程,并保存这些任务执行线程;也可以在接收到任务请求指令后的一定时间段内,记录某一任务请求指令触发的次数,如果在一定的时间段内接收同一任务请求指令的次数超过预设的数值,便将执行这一任务请求指令的任务执行线程保存在内存中;也可以记录任务执行线程处理任务请求指令时的时长,如果处理任务请求指令时的时长超过预设的时间阈值,则保存执行这一任务请求指令的任务执行线程。

举个例子,当客户端向服务器发送加密请求指令时,首先判断加密请求指令是否符合预设规则,也就是判断加密请求指令是否为预设指令、或在预设时间内,接收加密请求指令的次数超过预设次数阈值或在加密任务执行线程处理加密请求指令的时间超过预设时间阈值,若加密请求指令为上述预设规则的三种情况中的任意一种时,查询是否存在处理加密请求指令的任务执行线程,若不存在处理加密请求指令的任务执行线程,则创建处理加密请求指令的任务执行线程,在加密请求指令处理结束后,保存该任务执行线程。若加密请求指令不属于上述预设规则的三种情况中的任意一种时,则创建新的任务执行线程处理加密请求指令,待加密请求指令处理完毕后,将任务执行线程销毁,即客户端中不会存在该任务执行线程。

本实施例提供的任务执行线程的处理方法,当接收到的任务请求指令符合预设规则时,任务执行线程处理完成应用程序中的一个任务请求指令之后,不会将任务执行线程销毁,而是可以继续用于执行下一次的同一任务请求,当再次接收到同一任务请求指令时,调用第一次处理该任务请求指令时的任务执行线程,处理该任务请求指令,无需重新创建线程,避免了任务执行线程的频繁创建,减少了系统开销,降低了程序复杂度,减少了维护成本。

在一实施例中,保存任务执行线程的过程,可以包括,将任务执行线程的类名和任务执行线程的地址写入映射表中,并将所述映射表保存在内存中。

所述映射表记录的是任务执行线程的类名和任务执行线程的地址的对应关系。可以先判断内存中是否已经存在所述映射表,如果存在,则不需要再生成新的映射表,将任务执行线程的类名和任务执行线程的地址写入已有的映射表中即可;如果没有映射表,则需创建映射表,存入内存,将任务执行线程的类名和任务执行线程的地址写入该映射表中以使所述映射表中包括任务执行线程的类名和任务执行线程的地址。

在一个实施例中,可以利用nsdictionary集合保存映射表,其中,映射表中的任务执行线程的类名与nsdictionary集合中的key关联并保存,任务执行线程的地址与nsdictionary集合中的value关联并保存,映射表中包括任务执行线程的类名和任务执行线程的地址。

例如在一个实际的例子中,在应用程序启动时,通过实例化nsdictionary集合创建映射表,将映射表中的任务执行线程的类名与nsdictionary集合中的key关联并保存,任务执行线程的地址与nsdictionary集合中的value关联并保存。任务执行线程的类名和任务执行线程一一对应,任务执行线程的类名可以是字符串标识,这个字符串标识是唯一的,当接收到请求指令时,在映射表中查询是否存在处理所述任务请求指令的任务执行线程,若映射表中存在处理任务请求指令的任务执行线程,即nsdictionary集合中存在与任务执行线程的类名相同的key,获取该key对应的value,以获得任务执行线程的执行地址;根据执行地址调用任务执行线程处理任务请求指令。

应当理解的是,所述任务执行线程一次只处理一个任务请求指令。任务执行线程可以在同一时段内接收多个同一任务请求,此时在任务执行线程中,可以根据接收到任务请求的先后顺序依次对任务请求进行处理;任务执行线程也可以一次只接收一个任务请求,当前接收到一个任务请求在任务执行线程中进行任务处理完毕之后,再接收下一个任务请求。如此,避免了同时多次调用同一任务执行线程的情况,一方面减少线程的调用数量,另一方面保证线程执行安全。

在另一实施例中,如图2所示,本申请还提供一种任务执行线程的处理装置,装置包括:判断模块21、查询模块22和线程创建模块23,其中:

判断模块21,被配置于接收任务请求指令后,判断任务请求指令是否符合预设规则;

查询模块22,被配置于若任务请求指令符合预设规则,查询是否存在处理任务请求指令的任务执行线程;

线程创建模块23,被配置于若不存在处理任务请求指令的任务执行线程,则创建新的任务执行线程,在任务请求处理结束时,保存任务执行线程。

由上述实施例可见,通过将需要频繁处理任务请求指令的任务执行线程保存起来,当接收到这些频率较高的任务请求指令时,调用已保存的任务执行线程,将相同的任务请求指令放在同一个任务执行线程中处理,减少创建任务执行线程的次数,释放更多的内存,减少客户端卡顿。

其中,预设规则包括任务请求指令为预设指令和/或在预设时间内,接收任务请求指令的次数超过预设次数阈值;还包括在任务执行线程中处理任务请求指令的时间超过预设时间阈值。

相应的,如图3所示本发明还提供一种任务执行线程的处理设备30,包括有处理器31;用于存储可执行指令的存储器32,所述存储器32包括计算机程序33;其中,处理器31被配置为:

接收任务请求指令后,判断所述任务请求指令是否符合预设规则;

若所述任务请求指令符合预设规则,查询是否存在处理所述任务请求指令的任务执行线程;

若不存在处理所述任务请求指令的任务执行线程,则创建新的任务执行线程,在任务请求处理结束时,保存所述任务执行线程。

所称处理器31可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

存储器32可以包括至少一种类型的存储介质,存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等等。而且,设备可以与通过网络连接执行存储器的存储功能的网络存储装置协作。存储器32可以是设备30的内部存储单元,例如设备30的硬盘或内存。存储器32也可以是设备30的外部存储设备,例如设备30上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,存储器32还可以既包括设备30的内部存储单元也包括外部存储设备。存储器32用于存储计算机程序33以及设备所需的其他程序和数据。存储器32还可以用于暂时地存储已经输出或者将要输出的数据。

这里描述的各种实施方式可以使用例如计算机软件、硬件或其任何组合的计算机可读介质来实施。对于硬件实施,这里描述的实施方式可以通过使用特定用途集成电路(asic)、数字信号处理器(dsp)、数字信号处理装置(dspd)、可编程逻辑装置(pld)、现场可编程门阵列(fpga)、处理器、控制器、微控制器、微处理器、被设计为执行这里描述的功能的电子单元中的至少一种来实施。对于软件实施,诸如过程或功能的实施方式可以与允许执行至少一种功能或操作的单独的软件模块来实施。软件代码可以由以任何适当的编程语言编写的软件应用程序(或程序)来实施,软件代码可以存储在存储器中并且由控制器执行。

设备30可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。设备可包括,但不仅限于,处理器31、存储器32。本领域技术人员可以理解,图3仅仅是设备30的示例,并不构成对设备30的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如设备还可以包括输入输出设备、网络接入设备、总线等。

上述设备中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器,上述指令可由装置的处理器执行以完成上述方法。例如,非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。

一种非临时性计算机可读存储介质,当存储介质中的指令由终端的处理器执行时,使得终端能够执行上述方法。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本发明旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。

应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

以上仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

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