线程执行方法、装置、终端及存储介质转让专利

申请号 : CN201910197390.9

文献号 : CN109918141B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王猛猛

申请人 : OPPO广东移动通信有限公司

摘要 :

本申请实施例提供了一种线程执行方法、装置、终端及存储介质。该方法包括:识别处于阻塞状态的线程中是否存在关键线程;若处于阻塞状态的线程中存在关键线程,则确定关键线程的等待链;获取依赖线程对应的线程执行策略;按照依赖线程对应的线程执行策略,执行依赖线程。本申请实施例提供的技术方案,通过在确定出存在关键线程处于堵塞状态的情况下,分析获取唤醒该关键线程所依赖的各个线程,之后获取上述各个线程对应的线程执行策略,并按照上述线程执行策略执行上述各个线程,使得唤醒关键线程所依赖的各个线程的执行效率得以提升,关键线程被唤醒所需的时间缩短,进而使得关键线程的执行效率也得以提升。

权利要求 :

1.一种线程执行方法,其特征在于,所述方法包括:

识别处于阻塞状态的线程中是否存在关键线程;

若所述处于阻塞状态的线程中存在所述关键线程,则确定所述关键线程的等待链,所述等待链中包括所述关键线程的依赖线程,所述依赖线程是唤醒所述关键线程所依赖的线程,所述依赖线程用于向所述关键线程提供所述依赖线程的执行结果和/或同步锁;

检测是否接收到对应于在前台运行的应用程序的交互操作;

若检测到所述交互操作,则检测所述关键线程是否与所述在前台运行的应用程序的实时任务存在关联关系;

若所述关键线程与所述实时任务存在所述关联关系,则获取所述依赖线程对应的线程执行策略,按照所述依赖线程对应的线程执行策略,执行所述依赖线程;

若所述关键线程与所述实时任务不存在所述关联关系,则删除所述关键线程,以及所述关键线程的等待链。

2.根据权利要求1所述的方法,其特征在于,所述确定所述关键线程的等待链,包括:通过递归方式在历史唤醒记录中确定所述依赖线程,所述递归方式是指从初始条件触发,利用递推关系以求得结果的方式;

将所述依赖线程添加至所述等待链。

3.根据权利要求2所述的方法,其特征在于,所述依赖线程包括m条支链,所述m条支链中的每条支链包括n级,所述m为正整数,所述n为正整数,所述每条支链中的第n级依赖线程的唤醒方式为中断方式;

所述通过递归方式在历史唤醒记录中确定所述依赖线程,包括:将所述历史唤醒记录中唤醒过所述关键线程的线程确定为第k条支链中的第1级依赖线程,所述k为小于或等于m的正整数;

将所述历史唤醒记录中唤醒过所述第k条支链中的第i级依赖线程的线程确定为所述第k条支链中的第i+1级依赖线程,所述i为小于或等于n-1的正整数。

4.根据权利要求1所述的方法,其特征在于,所述获取所述依赖线程对应的线程执行策略,包括:提高所述依赖线程的执行优先级;和/或,将所述依赖线程绑定至中央处理单元CPU大核。

5.根据权利要求4所述的方法,其特征在于,所述提高所述依赖线程的执行优先级;和/或,将所述依赖线程绑定至中央处理单元CPU大核,包括:检测所述依赖线程所绑定的是所述CPU大核或CPU小核;

若所述依赖线程所绑定的是所述CPU小核,则将所述依赖线程与所述CPU小核解除绑定,并将所述依赖线程与所述CPU大核绑定;

若所述依赖线程所绑定的是所述CPU大核,则检测所述依赖线程的执行优先级是否小于预设等级;

若所述依赖线程的执行优先级小于所述预设等级,则提高所述依赖线程的执行优先级。

6.根据权利要求1至5任一项所述的方法,其特征在于,所述关键线程为渲染线程,所述识别处于阻塞状态的线程中是否存在关键线程,包括:调用操作系统中的预设接口识别所述处于阻塞状态的线程中是否存在所述渲染线程。

7.一种线程执行装置,其特征在于,所述装置包括:

线程识别模块,用于识别处于阻塞状态的线程中是否存在关键线程;

等待链确定模块,用于若所述处于阻塞状态的线程中存在所述关键线程,则确定所述关键线程的等待链,所述等待链中包括所述关键线程的依赖线程,所述依赖线程是唤醒所述关键线程所依赖的线程,所述依赖线程用于向所述关键线程提供所述依赖线程的执行结果和/或同步锁;

第二检测模块,用于检测是否接收到对应于在前台运行的应用程序的交互操作;

第一检测模块,用于若检测到所述交互操作,则检测所述关键线程是否与所述在前台运行的应用程序的实时任务存在关联关系;

策略获取模块,用于若所述关键线程与所述实时任务存在所述关联关系获取所述依赖线程对应的线程执行策略;线程执行模块,用于若所述关键线程与所述实时任务存在所述关联关系按照所述依赖线程对应的线程执行策略,执行所述依赖线程;

删除模块,用于若所述关键线程与所述实时任务不存在所述关联关系,则删除所述关键线程,以及所述关键线程的等待链。

8.一种终端,其特征在于,所述终端包括处理器和存储器,所述存储器存储有计算机程序,所述计算机程序由所述处理器加载并执行以实现如权利要求1至6任一项所述的线程执行方法。

9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序由处理器加载并执行以实现如权利要求1至6任一项所述的线程执行方法。

说明书 :

线程执行方法、装置、终端及存储介质

技术领域

[0001] 本申请实施例涉及终端技术领域,特别涉及一种线程执行方法、装置、终端及存储介质。

背景技术

[0002] 线程是操作系统能够进行运算调度的最小单位。线程的执行效率直接影响到终端的使用性能。
[0003] 实际应用中,操作系统通常结合线程的执行优先级、不同中央处理单元(Central Processing Unit,CPU)的功耗、以及系统负载的变化能多方面的因素来确定线程的执行策略,并按照上述执行策略来执行线程。

发明内容

[0004] 本申请实施例提供一种线程执行方法、装置、终端及存储介质。所述技术方案如下:
[0005] 一方面,本申请实施例提供一种线程执行方法,所述方法包括:
[0006] 识别处于阻塞状态的线程中是否存在关键线程;
[0007] 若所述处于阻塞状态的线程中存在所述关键线程,则确定所述关键线程的等待链,所述等待链中包括所述关键线程的依赖线程,所述依赖线程是唤醒所述关键线程所依赖的线程;
[0008] 获取所述依赖线程对应的线程执行策略;
[0009] 按照所述依赖线程对应的线程执行策略,执行所述依赖线程。
[0010] 另一方面,本申请实施例提供一种线程执行装置,所述装置包括:
[0011] 线程识别模块,用于识别处于阻塞状态的线程中是否存在关键线程;
[0012] 等待链确定模块,用于若所述处于阻塞状态的线程中存在所述关键线程,则确定所述关键线程的等待链,所述等待链中包括所述关键线程的依赖线程,所述依赖线程是唤醒所述关键线程所依赖的线程;
[0013] 策略获取模块,用于获取所述依赖线程对应的线程执行策略;
[0014] 线程执行模块,用于按照所述依赖线程对应的线程执行策略,执行所述依赖线程。
[0015] 再一方面,本申请实施例提供一种终端,所述终端包括处理器和存储器,所述存储器存储有计算机程序,所述计算机程序由所述处理器加载并执行以实现上述方面所述的线程执行方法。
[0016] 又一方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序由处理器加载并执行以实现上述方面所述的线程执行方法。
[0017] 本申请实施例提供的技术方案可以带来如下有益效果:
[0018] 通过在确定出存在关键线程处于堵塞状态的情况下,分析获取唤醒该关键线程所依赖的各个线程,之后获取上述各个线程对应的线程执行策略,并按照上述线程执行策略执行上述各个线程,使得唤醒关键线程所依赖的各个线程的执行效率得以提升,关键线程被唤醒所需的时间缩短,进而使得关键线程的执行效率也得以提升。

附图说明

[0019] 图1是本申请一个实施例提供的线程执行方法的流程图;
[0020] 图2是本申请另一个实施例提供的等待链的示意图;
[0021] 图3是本申请一个实施例提供的线程执行方法的流程图;
[0022] 图4是本申请一个实施例提供的线程执行装置的框图;
[0023] 图5是本申请一个实施例提供的终端的框图。

具体实施方式

[0024] 为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
[0025] 首先,先对本申请涉及的相关名词进行介绍。
[0026] 关键线程:是指能够影响系统性能的线程,上述系统性能是用户能够直观感受到的性能,比如当前显示画面的渲染时间、画面质量、帧率等等。上述关键线程可以是渲染线程。
[0027] 关键线程的依赖线程:是指唤醒关键线程所依赖的线程。关键线程在执行时需要依赖线程提供的资源,比如依赖线程的执行结果、同步锁等等。在该情况下,关键线程需要在依赖线程执行完毕才开始执行。
[0028] 关键线程的等待链:等待链包括唤醒关键线程的所有依赖线程,以及上述所有依赖线程之间的依赖关系。等待链包括m条支链,每条支链包括n级线程,m为正整数,n也为正整数。其中,每条支链所对应的n的取值可以相同,也可以不相同。每条支链中的第1级线程是指唤醒关键线程所依赖的线程,每条支链中的第i+1级线程是指唤醒第i级线程所依赖的线程,i的取值为小于或等于n-1的正整数。每条支链中的第n级线程的唤醒方式为中断方式。
[0029] 中断方式:CPU暂时中止现行程序的执行,转去执行为某个随机事态服务的中断处理程序,处理完毕后自动恢复原程序的执行。
[0030] CPU大核:运行频率较高的CPU,其运行频率通常为2.6Ghz,主要用于处理运行型程序,比如游戏类应用程序、直播类应用程序等。CPU大核的数量可以是1个、2个、4个等等。
[0031] CPU小核:运行频率较低的CPU,其运行频率通常为2.1Ghz,主要用于处理普通应用程序。CPU大核的数量可以是4个、6个、9个等等。CPU大核的运行频率通常大于CPU小核的运行频率。
[0032] 相关技术中,若某个关键线程执行时依赖其它线程的执行结果,则终端先执行其它线程再执行关键线程,此时若上述其它线程的执行优先级较低,或者分配到的系统资源较少时,其它线程的执行效率较低,导致关键线程的执行效率也较低。
[0033] 基于此,本申请实施例提供了一种线程执行方法、装置、终端及存储介质。在本申请实施例提供的技术方案中,通过在确定出存在关键线程处于堵塞状态的情况下,分析获取唤醒该关键线程所依赖的各个线程,之后获取上述各个线程对应的线程执行策略,并按照上述线程执行策略执行上述各个线程,使得唤醒关键线程所依赖的各个线程的执行效率得以提升,关键线程被唤醒所需的时间缩短,进而使得关键线程的执行效率也得以提升。
[0034] 本申请实施例提供的技术方案,各步骤的执行主体是终端。可选地,终端中运行有操作系统,该操作系统也可以是Android(安卓)操作系统,也可以是IOS操作系统。各步骤的执行主体也可以是操作系统。在本申请实施例中,仅以各步骤的执行主体为终端为例进行说明。
[0035] 请参考图1,其示出了本申请一个实施例示出的线程执行方法的流程图。该方法可以应用于终端中,该方法包括如下几个步骤:
[0036] 步骤101,识别处于阻塞状态的线程中是否存在关键线程。
[0037] 阻塞状态是指线程因为某种原因放弃CPU使用权,暂时停止运行的状态。线程处于阻塞状态可能有如下原因:
[0038] 1)等待阻塞,也即通过调用线程的wait()方法,让线程等待某工作的完成;2)同步阻塞,也即线程在获取synchronized同步锁失败(因为锁被其他线程占用),它会进入同步阻塞状态;3)其他阻塞,也即通过调用线程的sleep()或join()或发出了I/O请求时,线程会进入到阻塞状态。
[0039] 在本申请实施例中,线程处于阻塞状态的原因通常是等待阻塞与同步阻塞。
[0040] 关键线程是指能够影响系统性能的线程,上述系统性能是用户能够直观感受到的性能,比如当前显示画面的渲染时间、画面质量、帧率等等。
[0041] 可选地,上述关键线程可以是渲染线程,步骤101具体实现为:调用操作系统中的预设接口识别处于阻塞状态的线程中是否存在渲染线程。
[0042] 在一种可能的实现方式中,终端在确定出当前运行的应用程序为预设类型的应用程序时,执行后续识别处于阻塞状态的线程中是否存在关键线程的步骤。上述预设类型的应用程序可以是游戏类应用程序、直播类应用程序、视频通话类应用程序等等。在另一种可能的实现方式中,终端在当前显示画面符合预设条件的情况下,执行后续识别处于阻塞状态的线程中是否存在关键线程的步骤。上述预设条件可以是当前显示画面的画面质量低于预设值,也可以是当前显示画面出现卡顿。其中,当前显示画面出现卡顿可以是指应用程序的帧率小于预设帧率,也可以是指应用程序的帧率发生下降,还可以是应用程序的帧率的下降速度大于预设速度,本申请实施例对此不作限定。其中,上述预设值、预设帧率、预设速度均可以根据实际需求设定,本申请实施例对此不作限定。
[0043] 步骤102,若处于阻塞状态的线程中存在关键线程,则确定关键线程的等待链。
[0044] 等待链中包括关键线程的依赖线程。依赖线程是指唤醒关键线程所依赖的线程。依赖线程的数量可以是一个,也可以是多个。在上文实施例中介绍过,阻塞状态的原因可能是等待阻塞、同步阻塞等。结合上述原因,在本申请实施例中,依赖线程是指向关键线程提供预设资源的线程,上述预设资源可以是依赖线程的执行结果,也可以是同步锁。
[0045] 可选地,步骤102可以实现为:
[0046] 步骤102a,通过递归方式在历史唤醒记录中确定依赖线程;
[0047] 递归方式是指从初始条件触发,利用递推关系以求得结果的方式。历史唤醒记录用于描述关键线程在以往的执行过程中的唤醒信息。
[0048] 可选地,依赖线程包括m条支链,m为正整数。m条支链中的每条支链包括n级,n为正整数。每条支链对应的n的取值可以相同,也可以不相同。每条支链中的第n级依赖线程的唤醒方式为中断方式。中断方式是指CPU暂时中止现行程序的执行,转去执行为某个随机事态服务的中断处理程序,处理完毕后自动恢复原程序的执行的方式。
[0049] 可选地,步骤102a具体实现为:
[0050] 1、将历史唤醒记录中唤醒过关键线程的线程确定为第k条支链中的第1级依赖线程,k为小于或等于m的正整数;
[0051] 2、将历史唤醒记录中唤醒过第k条支链中的第i级依赖线程的线程确定为第k条支链中的第i+1级依赖线程,i为小于或等于n-1的正整数。
[0052] 步骤102b,将依赖线程添加至等待链。
[0053] 终端将上述各个依赖线程添加至等待链。可选地,终端在确定出等待链之后,存储上述等待链。本申请实施例对等待链的存储方式,以及存储路径均不作限定。可选地,终端在列表中存储上述等待链。
[0054] 在一个具体的例子中,结合参考图2,其示出了本申请一个实施例示出的等待链的示意图。关键线程A的等待链包括3条支链。其中,第1条支链包括依赖线程B,依赖线程B的唤醒方式为中断方式;第2条支链包括第1级依赖线程C、第2级依赖线程E,第2级依赖线程E的唤醒方式为中断方式,第3条支链包括第1级依赖线程D和第2级依赖线程F和G,第2级依赖线程F和G的唤醒方式为中断方式。
[0055] 步骤103,获取依赖线程对应的线程执行策略。
[0056] 依赖线程对应的线程执行策略用于指示如何执行依赖线程。可选地,步骤103可以包括:提高依赖线程的执行优先级;和/或,将依赖线程绑定至中央处理单元CPU大核。
[0057] 线程的执行优先级用于指示线程的执行顺序。线程的执行优先级越高,则该线程被执行的顺序越靠前;线程的执行优先级越低,则该线程的执行顺序越靠后。通常情况下,处于执行状态的线程的执行优先级最高。在本申请实施例中,终端提高依赖线程的执行优先级,也即将该依赖线程的执行顺序提前。
[0058] CPU大核是指运行频率较高的CPU,其运行频率通常为2.6Ghz,主要用于处理运行型程序,比如游戏类应用程序、直播类应用程序等。CPU大核的数量可以是1个、2个、4个等等。
[0059] 将依赖线程绑定至CPU大核也即是设定该依赖线程与CPU大核之间的亲和力,之后该依赖线程只会在所绑定的CPU大核上运行。将依赖线程绑定至CPU大核可以通过掩码形式或者列表形式完成,本申请实施例对此不作限定。掩码形式是指掩码转化为二进制形式,掩码所转化的二进制从最低位到最高位用于指示内核的序号,当某一位的取值为1时,则该位对应的内核被绑定。列表形式是指直接在列表中记录要绑定的核的序号。
[0060] 可选地,当CPU大核的数量为多个时,终端检测各个CPU大核的负载,将负载符合预设条件的CPU大核确定为与依赖线程绑定的CPU大核。上述预设条件可以是CPU大核的负载低于预设值,也可以是CPU大核的负载最低。上述预设值可以根据实际需求设定,本申请实施例对此不作限定。
[0061] 在一个具体的示例中,步骤103具体实现为:
[0062] 1、检测依赖线程所绑定的是CPU大核或CPU小核;
[0063] 若终端采用掩码形式进行绑核,则先确定掩码所转化成的二进制数中1所处的位数,之后根据该位数确定依赖线程所绑定的CPU内核,之后根据被绑定的CPU内核的运行频率判断是CPU大核,还是CPU小核。
[0064] 若终端采用列表形式进行绑核,则终端直接从列表中读取依赖线程所绑定的CPU内核,之后根据被绑定的CPU内核的运行频率判断是CPU大核,还是CPU小核。
[0065] 2、若依赖线程所绑定的是CPU小核,则将依赖线程与CPU小核解除绑定,并将依赖线程与CPU大核绑定。
[0066] 3、若依赖线程所绑定的是CPU大核,则检测依赖线程的执行优先级是否小于预设等级;
[0067] 预设等级可以根据实际需求设定,本申请实施例对此不作限定。
[0068] 4、若依赖线程的执行优先级小于预设等级,则提高依赖线程的执行优先级。
[0069] 步骤104,按照依赖线程对应的线程执行策略,执行依赖线程。
[0070] 终端按照获取到的线程执行策略,执行上述依赖线程。
[0071] 可选地,终端在执行完依赖线程后,关键线程由堵塞状态切换至就绪状态,之后切换至执行状态。
[0072] 在一个具体的例子中,结合参考图3,其示出了本申请一个实施例示出的线程执行方法的流程图。终端先识别出处于堵塞状态的关线程,之后通过递归方式查找关键线程的等待链,将关键线程以及等待链中的线程优先级提升,必要时放到大核执行。
[0073] 综上所述,本申请实施例提供的技术方案,通过在确定出存在关键线程处于堵塞状态的情况下,分析获取唤醒该关键线程所依赖的各个线程,之后获取上述各个线程对应的线程执行策略,并按照上述线程执行策略执行上述各个线程,使得唤醒关键线程所依赖的各个线程的执行效率得以提升,关键线程被唤醒所需的时间缩短,进而使得关键线程的执行效率也得以提升。
[0074] 应用程序在运行过程中,用户会与其进行交互,此时终端会根据用户所执行的交互操作执行下一任务,此时终端所需运行的关键线程也是在不断变化的,终端在列表中所存储的关键线程以及关键线程的等待链也需要及时更新。在基于图1所示实施例提供的可选实施例中,该方法还包括:
[0075] 1、关键线程是否与在前台运行的应用程序的实时任务存在关联关系。
[0076] 实时任务是指在预设时长内即将执行的任务,上述预设时长可以根据实际需求设定,本申请实施例对此不作限定。
[0077] 关键线程与实时任务存在关联关系是指关键线程被执行完毕后,终端会显示上述实时任务。关键线程与实时任务不存在关联关系是指关键线程被执行完毕后,终端不会显示上述实时任务。
[0078] 可选地,终端监控是否接收到用户触发的对应于在前台运行的应用程序的交互操作,若终端监控到接收到该交互操作,则检测关键线程是否与前台运行的应用程序的实时任务存在关联关系。
[0079] 在其它可能的实现方式中,终端每隔预设时间检测关键线程是否与前台运行的应用程序的实时任务存在关联关系,上述预设时间可以根据实际需求设定,本申请实施例对此不作限定。
[0080] 2、若关键线程与实时任务不存在关联关系,则删除关键线程,以及关键线程的等待链。
[0081] 若关键线程与实时任务不存在关联关系,则终端将列表中的关键线程以及关键线程的等待链删除,以更新列表。
[0082] 用户在应用程序的运行过程中有可能与其进行交互,终端根据用户所执行的交互操作显示不同的画面,因此终端中亟待运行的关键线程是不断变化的。在本申请实施例中,终端根据实时任务对存储等待链的列表进行更新,避免终端先执行不必要的关键线程之后响应用户所执行的交互操作,可以减小终端响应用户的交互操作所需的时间。
[0083] 综上所述,本申请实施例提供的技术方案,通过根据在前台运行的应用程序的实时任务来对列表中存储的关键线程以及关键线程的等待链进行更新,可以避免终端先执行不必要的关键线程之后响应用户所执行的交互操作,减小终端响应用户的交互操作所需的时间。
[0084] 请参考图4,其示出了本申请一个实施例提供的线程执行装置的框图。该装置可以包括:线程识别模块401、等待链确定模块402、策略获取模块403和线程执行模块404.[0085] 线程识别模块401,用于识别处于阻塞状态的线程中是否存在关键线程。
[0086] 等待链确定模块402,用于若所述处于阻塞状态的线程中存在所述关键线程,则确定所述关键线程的等待链,所述等待链中包括所述关键线程的依赖线程,所述依赖线程是唤醒所述关键线程所依赖的线程。
[0087] 策略获取模块403,用于获取所述依赖线程对应的线程执行策略。
[0088] 线程执行模块404,用于按照所述依赖线程对应的线程执行策略,执行所述依赖线程。
[0089] 综上所述,本申请实施例提供的技术方案,通过在确定出存在关键线程处于堵塞状态的情况下,分析获取唤醒该关键线程所依赖的各个线程,之后获取上述各个线程对应的线程执行策略,并按照上述线程执行策略执行上述各个线程,使得唤醒关键线程所依赖的各个线程的执行效率得以提升,关键线程被唤醒所需的时间缩短,进而使得关键线程的执行效率也得以提升。
[0090] 在基于图4实施例提供的一个可选实施例中,所述等待链确定模块402,用于:
[0091] 通过递归方式在历史唤醒记录中确定所述依赖线程,所述递归方式是指从初始条件触发,利用递推关系以求得结果的方式;
[0092] 将所述依赖线程添加至所述等待链。
[0093] 可选地,所述依赖线程包括m条支链,所述m条支链中的每条支链包括n级,所述m为正整数,所述n为正整数,所述每条支链中的第n级依赖线程的唤醒方式为中断方式;
[0094] 所述等待链确定模块402,用于:
[0095] 将所述历史唤醒记录中唤醒过所述关键线程的线程确定为第k条支链中的第1级依赖线程,所述k为小于或等于m的正整数;
[0096] 将所述历史唤醒记录中唤醒过所述第k条支链中的第i级依赖线程的线程确定为所述第k条支链中的第i+1级依赖线程,所述i为小于或等于n-1的正整数。
[0097] 在基于图4所示实施例提供的一个可选实施例中,所述策略获取模块403,用于提高所述依赖线程的执行优先级;和/或,将所述依赖线程绑定至中央处理单元CPU大核。
[0098] 可选地,所述策略获取模块403,用于:
[0099] 检测所述依赖线程所绑定的是所述CPU大核或CPU小核;
[0100] 若所述依赖线程所绑定的是所述CPU小核,则将所述依赖线程与所述CPU小核解除绑定,并将所述依赖线程与所述CPU大核绑定;
[0101] 若所述依赖线程所绑定的是所述CPU大核,则检测所述依赖线程的执行优先级是否小于预设等级;
[0102] 若所述依赖线程的执行优先级小于所述预设等级,则提高所述依赖线程的执行优先级。
[0103] 在基于图4所示实施例提供的一个可选实施例中,所述关键线程为渲染线程,所述线程识别模块401,用于调用操作系统中的预设接口识别所述处于阻塞状态的线程中是否存在所述渲染线程。
[0104] 在基于图4所示实施例提供的一个可选实施例中,所述装置还包括:第一检测模块和删除模块(图中未示出)。
[0105] 第一检测模块,用于检测所述关键线程是否与在前台运行的应用程序的实时任务存在关联关系。
[0106] 删除模块,用于若所述关键线程与所述实时任务不存在所述关联关系,则删除所述关键线程,以及所述关键线程的等待链。
[0107] 可选地,所述装置还包括:第二检测模块(图中未示出)。
[0108] 第二检测模块,用于检测是否接收到对应于所述在前台运行的应用程序的交互操作;
[0109] 所述第一检测模块,用于若检测到所述交互操作,则执行所述检测所述关键线程是否与在前台运行的应用程序的实时任务存在关联关系的步骤。
[0110] 需要说明的是,上述实施例提供的装置在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0111] 参考图5,其示出了本申请一个示例性实施例提供的终端的结构方框图。本申请中的终端可以包括一个或多个如下部件:处理器510和存储器520。
[0112] 处理器510可以包括一个或者多个处理核心。处理器510利用各种接口和线路连接整个终端内的各个部分,通过运行或执行存储在存储器520内的指令、程序、代码集或指令集,以及调用存储在存储器520内的数据,执行终端的各种功能和处理数据。可选地,处理器510可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable Logic Array,PLA)中的至少一种硬件形式来实现。处理器510可集成中央处理器(Central Processing Unit,CPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统和应用程序等;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器510中,单独通过一块芯片进行实现。
[0113] 可选地,处理器510执行存储器520中的程序指令时实现下上述各个方法实施例提供的线程执行方法。
[0114] 存储器520可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。可选地,该存储器520包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器520可用于存储指令、程序、代码、代码集或指令集。存储器520可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令、用于实现上述各个方法实施例的指令等;存储数据区可存储根据终端的使用所创建的数据等。
[0115] 上述终端的结构仅是示意性的,在实际实现时,终端可以包括更多或更少的组件,比如:显示屏等,本实施例对此不作限定。
[0116] 本领域技术人员可以理解,图5中示出的结构并不构成对终端500的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
[0117] 在示例性实施例中,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序由终端的处理器加载并执行以实现上述方法实施例中的各个步骤。
[0118] 在示例性实施例中,还提供了一种计算机程序产品,当该计算机程序产品被执行时,其用于实现上述方法实施例中的各个步骤的功能。
[0119] 应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
[0120] 上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
[0121] 以上所述仅为本申请的示例性实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。