1.本技术属于电子技术领域,尤其涉及一种线程识别方法、装置、存储介质及电子设备。
背景技术:2.现代操作系统中,应用的多线程运行逐渐常态化发展,而随着同时运行的线程数量的逐步增多,线程之间也会相互抢占资源。为了提高应用的运行效率,需要对影响应用运行的重要线程进行识别。
技术实现要素:3.本技术实施例提供一种线程识别方法、装置、存储介质及电子设备,可以对待识别应用的关键线程进行识别。
4.第一方面,本技术实施例提供一种线程识别方法,包括:
5.获取待识别应用的多个线程在其界面绘制过程中的线程状态信息,及所述界面的绘制时长信息;
6.根据各所述线程的所述线程状态信息和所述绘制时长信息,确定各所述线程的线程状态与所述界面的绘制时长的第一相关度;
7.将大于或等于第一预设相关度的第一相关度所对应的线程确定为所述待识别应用的关键线程。
8.第二方面,本技术实施例提供一种线程识别装置,包括:
9.信息获取模块,应用于获取待识别应用的多个线程在其界面绘制过程中的线程状态信息,及所述界面的绘制时长信息;
10.相关度确定模块,用于根据各所述线程的所述线程状态信息和所述绘制时长信息,确定各所述线程的线程状态与所述界面的绘制时长的第一相关度;
11.线程确定模块,用于将大于或等于第一预设相关度的第一相关度所对应的线程确定为所述待识别应用的关键线程。
12.第三方面,本技术实施例提供一种存储介质,其上存储有计算机程序,当所述计算机程序在计算机上执行时,使得所述计算机执行本技术实施例提供的线程识别方法。
13.第四方面,本技术实施例还提供一种电子设备,包括存储器,处理器,所述处理器通过调用所述存储器中存储的计算机程序,用于执行本技术实施例提供的线程识别方法。
14.本技术实施例中,通过根据各线程的线程状态信息和绘制时长信息,确定各线程的线程状态与界面的绘制时长的第一相关度;将大于或等于第一预设相关度的第一相关度所对应的线程确定为待识别应用的关键线程,可以对待识别应用的重要线程,如关键线程进行识别。
附图说明
15.下面结合附图,通过对本技术的具体实施方式详细描述,将使本技术的技术方案及其有益效果显而易见。
16.图1是本技术实施例提供的线程识别方法的流程示意图。
17.图2是本技术实施例提供的重要线程链的第一种示意图。
18.图3是本技术实施例提供的重要线程链的第二种示意图。
19.图4是本技术实施例提供的线程识别装置的结构示意图。
20.图5是本技术实施例提供的电子设备的第一种结构示意图。
21.图6是本技术实施例提供的电子设备的第二种结构示意图。
具体实施方式
22.应当说明的是,本技术中的术语“第一”和“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或模块的过程、方法、系统、产品或设备没有限定于已列出的步骤或模块,而是某些实施例还包括没有列出的步骤或模块,或某些实施例还包括对于这些过程、方法、产品或设备固有的其它步骤或模块。
23.在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
24.本技术实施例提供一种线程识别方法、线程识别装置、存储介质及电子设备,其中线程识别方法的执行主体可以是本技术实施例提供的线程识别装置,或者集成了该线程识别装置的电子设备,其中该线程识别装置可以采用硬件或者软件的方式实现。其中,电子设备可以是智能手机、平板电脑、掌上电脑、笔记本电脑等配置有处理器而具有数据处理能力的设备。
25.请参阅图1,图1是本技术实施例提供的线程识别方法的流程示意图,流程可以包括:
26.在101中,获取待识别应用的多个线程在其界面绘制过程中的线程状态信息,及界面的绘制时长信息。
27.其中,待识别应用为需要对其的线程进行是否为重要线程的识别的应用。待识别应用。待识别应用可以包括电子设备中正在运行的任意应用。待识别应用也可以包括前台运行的任意应用。待识别应用也可以包括前台运行的预设类型的应用,如对帧率、触控灵敏度要求较高的游戏类应用。重要线程包括关键线程、与关键线程关联的关联线程以及与关联线程关联的关联线程,等等。
28.运行中的应用即为进程,进程包括多个线程,线程是进程内的基本调度单位。当应用运行时,需要由相应的线程调用相应的系统资源以相应的帧率,如30帧每秒、60帧每秒或90帧每秒进行该应用的相应界面的绘制,即对该应用的界面的显示内容的绘制,即对该应用的每帧显示内容的绘制。
29.线程在应用界面绘制过程中的线程状态信息为线程在应用界面绘制过程中的运
行状态信息,包括运行时长(running时长)信息、(等待时长runnable时长)、休眠时长(sleep时长)信息、运行次数信息,等等。
30.比如,假设待识别应用的各线程在其界面绘制过程中的线程状态包括running时长信息、runnable时长信息和运行次数信息,电子设备可以获取待识别应用在某段运行时间内,如待识别应用运行10分钟至运行20分钟内的这段时间内,待识别应用的多个线程在待识别应用的每帧显示内容的绘制过程中的running时长信息、runnable时长信息和运行次数信息,以及每帧显示内容的绘制时长信息。
31.例如,待识别应用的某线程在待识别应用的某帧显示内容的绘制过程中的running时长信息可以为3毫秒、runnable时长信息可以为2毫秒,运行次数信息可以为3次,该帧显示内容的绘制时长信息可以为20毫秒。
32.在102中,根据各线程的线程状态信息和界面的绘制时长信息,确定各线程的线程状态与界面的绘制时长的第一相关度。
33.比如,当得到各线程的线程状态信息和界面的绘制时长信息之后,电子设备根据各线程的线程状态信息和界面的绘制时长信息,确定各线程的线程状态与界面的绘制时长的第一相关度,从而后续可基于各线程的线程状态与界面的绘制时长的第一相关度确定待识别应用的关键线程。
34.在103中,将大于或等于第一预设相关度的第一相关度所对应的线程确定为所述待识别应用的关键线程。
35.其中,第一预设相关度可由用户设置,也可以由电子设备基于一定规则确定。
36.比如,假设线程t1的线程状态与界面的绘制时长的第一相关度大于或等于第一预设相关度,则电子设备将线程t1确定为待识别应用的关键线程。
37.又比如,假设线程t2的线程状态与界面的绘制时长的第一相关度,以及线程t3的线程状态与界面的绘制时长的第一相关度均大于或等于第一预设相关度,则电子设备将线程t2和t3确定为待识别应用的关键线程。
38.本实施例中,通过根据各线程的线程状态信息和绘制时长信息,确定各线程的线程状态与界面的绘制时长的第一相关度;将大于或等于第一预设相关度的第一相关度所对应的线程确定为待识别应用的关键线程,可以对待识别应用的重要线程,如关键线程进行识别。
39.在一可选地实施例中,根据各线程的线程状态信息和界面的绘制时长信息,确定各线程的线程状态与界面的绘制时长的第一相关度,可以包括:
40.(1)对各线程的线程状态信息与界面的绘制时长信息进行拟合,得到各线程的线程状态与界面的绘制时长的相关函数;
41.(2)根据相关函数中的相关系数,确定各线程的线程状态与界面的绘制时长的第一相关度。
42.比如,假设线程的线程状态信息包括running时长信息、等待时长信息和运行次数信息,电子设备对归一化后的各线程的running时长信息、等待时长信息和运行次数信息与界面的绘制时长信息进行拟合,得到各线程的线程状态与界面的绘制时长的相关函数。该相关函数可以如公式(1)所示。
43.y=a1x1+a2x2+a3x3+a4x4+
……
+a
n-1
x
n-1
+anxnꢀꢀꢀꢀ
(1)
44.其中,y表示界面的绘制时长,x1至xn表示各线程的running时长、等待时长和运行次数,a1至an表示相关函数的相关系数。
45.其中,相关系数介于-1到1之间。相关系数越趋近于-1或1,则表示第一相关度越高,相关系数越趋近于0,则表示第一相关度越低。本实施例中,电子设备可以将相关系数的绝对值作为第一相关度,也可以将相关系数的百分数作为第一相关度。例如,当相关系数为-0.9时,第一相关度可以为0.9,也可以为90%。
46.例如,假设需要确定待识别应用在某段运行时间内的关键线程,而在该段运行时间内电子设备共绘制了100帧显示内容,待识别应用的多个线程包括线程t1、线程t2和线程t3,电子设备可对归一化后的100帧显示内容中每帧显示内容的绘制过程中线程t1的running时长信息、线程t1的runnable时长信息、线程t1的运行次数信息、线程t2的running时长信息、线性t2的runnable时长信息、线程t2的运行次数信息、线程t3的running时长信息、线性t3的runnable时长信息、线程t3的运行次数信息与每帧显示内容的绘制时长信息进行拟合,得到线程t1的running时长x1、线程t1的runnable时长x2、线程t1的运行次数x3、线程t2的running时长x4、线性t2的runnable时长x5、线程t2的运行次数x6、线程t3的running时长x7、线性t3的runnable时长x8、线程t3的运行次数x9与界面的绘制时长y的相关函数。假设该相关函数为:
47.y=0.1x
1-0.9x2+0.6x
3-0.9x4+0x5+0.9x6+0.14x
7-0.2x8+0.23x948.电子设备可以确定线程t1的running时长与界面的绘制时长的第一相关度d11为10%,线程t1的runnable时长与绘制时长的第一相关度d12为90%,线程t1的运行次数与绘制时长的第一相关度d13为60%,线程t2的running时长与绘制时长的第一相关度d21为90%,线程t2的runnable时长与绘制时长的第一相关度d22为0%,线程t2的运行次数与绘制时长的第一相关度d23为90%,线程t3的running时长与绘制时长的第一相关度d31为14%,线程t1的runnable时长与绘制时长的第一相关度d32为20%,线程t1的运行次数与绘制时长的第一相关度d33为23%。
49.在一可选地实施例中,将大于或等于第一预设相关度的第一相关度所对应的线程确定为待识别应用的关键线程之前,还可以包括:
50.(1)按照第一相关度的大小顺序,对第一相关度进行排序;
51.(2)确定排序后的相邻两两第一相关度组合的差值;
52.(3)将差值最大的组合中较大的第一相关度确定为第一预设相关度。
53.比如,假设第一相关度分别为d11、d12、d13、d21、d22、d23、d31、d32和d33,第一相关度从大到小的顺序为:d12、d21、d23、d13、d33、d32、d31、d11、d22,可知,组合d12和d21的差值v11为0%,组合d21和d23的差值v12为0%,组合d23和d13的差值v13为30%,组合d13和d33的差值v14为37%,组合d33和d32的差值v15为3%,组合d32和d31的差值v16为6%,组合d31和d11的差值v17为4%,组合d11和d22的差值v18为10%,可知差值v14最大,因此,电子设备可将第一相关度d13确定为第一预设相关度,即第一预设相关度为60%。
54.又比如,假设第一相关度分别为d11、d12、d13、d21、d22、d23、d31、d32和d33,第一相关度从小到大的顺序为:d22、d11、d31、d32、d33、d13、d23、d21、d12,可知,组合d22和d11的差值v21为10%,组合d11和d31的差值v22为4%,组合d31和d32的差值v23为6%,组合d32和d33的差值v24为3%,组合d33和d13的差值v25为37%,组合d13和d23的差值v26为30%,
组合d23和d21的差值v27为0%,组合d21和d12的差值v28为0%,可知差值v25最大,因此,电子设备可将第一相关度d13确定为第一预设相关度,即第一预设相关度为60%。
55.在一可选地实施例中,将大于或等于第一预设相关度的第一相关度所对应的线程确定为待识别应用的关键线程之后,还可以包括:
56.(1)获取关键线程在界面绘制过程中的休眠及等待时长信息;
57.(2)根据多个线程中除关键线程之外的其他线程的线程状态信息和休眠及等待时长信息,确定其他线程的线程状态与关键线程的休眠及等待时长的第二相关度;
58.(3)将大于或等于第二预设相关度的第二相关度所对应的其他线程确定为与关键线程关联的关联线程。
59.其中,第二预设相关度可由用户设置,也可由电子设备基于一定规则设置。
60.关键线程在应用界面绘制过程中的休眠及等待时长信息根据关键线程在应用界面绘制过程中的runnable时长信息和关键线程在应用界面绘制过程中的sleep时长信息确定。
61.例如,假设关键线程在待识别应用的某帧显示内容的绘制过程中的runnable时长信息为2毫秒、sleep时长信息为3毫米,则关键线程在待识别应用的某帧显示内容的绘制过程中的休眠及等待时长信息为5毫秒。
62.需要说明的是,对于多个线程中除关键线程之外的其他线程的释义可参照以下示例。
63.例如,假设多个线程包括线程t1、t2、t3和t4,其中,关键线程为线程t1和线程t2,则除关键线程t1之外的其他线程为线程t2、t3和t4,除关键线程t2之外的其他线程为线程t1、t3和t4。
64.本实施例中,当得到多个线程中除关键线程之外的其他线程的线程状态信息和关键线程的休眠及等待时长信息之后,电子设备根据多个线程中除关键线程之外的其他线程的线程状态信息和关键线程的休眠及等待时长信息,确定其他线程的线程状态与关键线程的休眠及等待时长的第二相关度,再将大于或等于第二预设相关度的第二相关度所对应的其他线程确定为与关键线程关联的关联线程。
65.在一可选地实施例中,根据多个线程中除关键线程之外的其他线程的线程状态信息和休眠及等待时长信息,确定其他线程的线程状态与关键线程的休眠及等待时长的第二相关度,可以包括:
66.(1)对其他线程的线程状态信息与关键线程的休眠及等待时长进行拟合,得到各线程的线程状态与关键线程的休眠及等待时长的其他相关函数;
67.(2)根据其他相关函数中的相关系数,确定其他线程的线程状态与关键线程的休眠及等待时长的第二相关度。
68.比如,假设线程的线程状态信息包括running时长信息、等待时长信息和运行次数信息,电子设备对归一化后的其他线程的running时长信息、等待时长信息和运行次数信息与关键线程的休眠及等待时长信息进行拟合,得到其他线程的线程状态与关键线程休眠及等待时长的其他相关函数。该其他相关函数可以如公式(2)所示。
69.n=b1m1+b2m2+b3m3+b4m4+
……
+b
n-1mn-1
+b
nmn
ꢀꢀꢀꢀ
(2)
70.其中,n表示关键线程的休眠及等待时长,m1至mn表示各其他线程的running时长、
等待时长和运行次数,a1至an表示其他相关函数的相关系数。
71.其中,其他相关函数的相关系数介于-1到1之间。其他相关函数的相关系数越趋近于-1或1,则表示第二相关度越高,其他相关函数的相关系数越趋近于0,则表示第二相关度越低。本实施例中,电子设备可以将其他相关函数的相关系数的绝对值作为第二相关度,也可以将其他相关函数的相关系数的百分数作为第二相关度。例如,当其他相关函数的相关系数为-0.9时,第二相关度可以为0.9,也可以为90%。
72.例如,假设多个线程包括线程t1、t2、t3和t4,待识别应用在某段运行时间内的关键线程为线程t1和线程t2,而在该段运行时间内电子设备共绘制了100帧显示内容,电子设备可对归一化后的100帧显示内容中每帧显示内容的绘制过程中线程t2的running时长信息、线程t2的runnable时长信息、线程t2的运行次数信息、线程t3的running时长信息、线性t3的runnable时长信息、线程t3的运行次数信息、线程t4的running时长信息、线性t4的runnable时长信息、线程t4的运行次数信息与100帧显示内容中每帧显示内容的绘制过程中线程t1的休眠及等待信息进行拟合,得到线程t2的running时长m1、线程t2的runnable时长m2、线程t2的运行次数m3、线程t3的running时长m4、线性t3的runnable时长m5、线程t3的运行次数m6、线程t4的running时长m7、线性t4的runnable时长m8、线程t4的运行次数m9与关键线程t1的休眠及等待时长n的其他相关函数。假设该其他相关函数为:
73.n=0.7m1+0.9m2+0.6m3+0.1m4+0.1m5+0.1m6+0.2m7+0.21m8+0.13m974.电子设备可以确定线程t2的running时长与关键线程t1的休眠及等待时长的第二相关度d211为70%,线程t2的runnable时长与关键线程t1的休眠及等待时长的第二相关度d212为90%,线程t2的运行次数与关键线程t1的休眠及等待时长的第二相关度d213为60%,线程t3的running时长与关键线程t1的休眠及等待时长的第二相关度d311为10%,线程t3的runnable时长与关键线程t1的休眠及等待时长的第二相关度d312为10%,线程t3的运行次数与关键线程t1的休眠及等待时长的第二相关度d313为10%,线程t4的running时长与关键线程t1的休眠及等待时长的第二相关度d411为20%,线程t4的runnable时长与关键线程t1的休眠及等待时长的第二相关度d412为21%,线程t4的运行次数与关键线程t1的休眠及等待时长的第二相关度d413为13%。
75.可以理解的是,电子设备可以按照上述确定其他线程t2、t3、t4的running时长、runnable时长和运行次数与关键线程t1的休眠及等待时长的第二相关度相同的方式确定其他线程t1、t3、t4的running时长、runnable时长和运行次数与关键线程t2的休眠及等待时长的第二相关度,在此不再赘述。
76.在一可选地实施例中,将大于或等于第二预设相关度的第二相关度所对应的线程确定为待识别应用的关键线程之前,还可以包括:
77.(1)按照第二相关度的大小顺序,对第二相关度进行排序;
78.(2)确定排序后的相邻两两第二相关度组合的差值;
79.(3)将差值最大的组合中较大的第二相关度确定为第二预设相关度。
80.比如,假设第二相关度分别为d311、d312、d313、d411、d412、d413、d511、d512和d513,第二相关度从大到小的顺序为:d312、d311、d313、d512、d511、d513、d411、d412、d413,可知,组合d312和d311的差值v31为20%,组合d311和d313的差值v32为10%,组合d313和d512的差值v33为39%,组合d512和d511的差值v34为1%,组合d511和d513的差值v35为
7%,组合d513和d411的差值v36为3%,组合d411和d412的差值v37为0%,组合d412和d413的差值v38为0%,可知差值v33最大,因此,电子设备可将第二相关度d313确定为第二预设相关度,即第二预设相关度为60%。
81.又比如,假设第二相关度分别为d311、d312、d313、d411、d412、d413、d511、d512和d513,第二相关度从大到小的顺序为:d413、d412、d411、d513、d511、d512、d313、d311、d312,可知,组合d413和d412的差值v41为0%,组合d412和d411的差值v42为0%,组合d411和d4513的差值v43为3%,组合d513和d511的差值v44为7%,组合d511和d512的差值v45为1%,组合d512和d313的差值v46为39%,组合d313和d311的差值v47为10%,组合d311和d312的差值v48为20%,可知差值v46最大,因此,电子设备可将第二相关度d313确定为第二预设相关度,即第二预设相关度为60%。
82.在一可选地实施例中,将大于或等于第二预设相关度的第二相关度所对应的其他线程确定为与关键线程关联的关联线程之后,还可以包括:
83.确定与关联线程关联的关联线程,直至满足预设停止条件。
84.本实施例中,电子设备可按照与上述确定与关键线程关联的关联线程相同的方式确定与关联线程关联的关联线程,直至满足预设停止条件。其中,预设停止条件可以包括确定关联线程的次数达到预设次数或未确定出新的关联线程。
85.比如,假设电子设备通过步骤101至步骤103确定出关键线程t1,通过上述确定与关键线程关联的关联线程的步骤确定出与关键线程t1关联的关联线程t2和t3,通过与上述确定与关键线程关联的关联线程的步骤相同的步骤确定出与关联线程t2关联的关联线程t4和t5,以及与关联线程t3关联的关联线程t6和t7,假设预设停止条件包括确定关联线程的次数达到预设次数,而预设次数为2次,那么,电子设备可得到如图2所示的重要线程链;假设预设停止条件包括未能确定出新的关联线程,电子设备可继续按照与上述确定与关键线程关联的关联线程的步骤相同的步骤确定出分别与关联线程t4、t5、t6和t7关联的关联线程,假设电子设备确定出与关联线程t4关联的关联线程为t8和t9,与关联线程t6关联的关联线程为t10和t11,未能确定出与关联线程t5、t7、t8、t9、t10和t11关联的关键线程,那么,电子设备可以得到如图3所示的重要线程链。
86.在一可选地实施例中,获取待识别应用的多个线程在其界面绘制过程中的线程状态信息,及界面的绘制时长信息之前,还可以包括:
87.后台运行多个其他应用。
88.可以理解的是,大部分电子设备均能支持单个应用的正常运行,即大部分电子设备在运行单个应用时,该应用的各线程之间一般不会相互抢占资源,因此,本实施例中,电子设备可以后台运行多个其他应用,使得与待识别应用的线程同时运行的线程的数量增多,从而使得线程之间容易出现资源抢占的问题,进而更好地识别出待识别应用的关键线程。
89.在一可选地实施例中,后台运行多个其他应用之前,还可以包括:
90.根据应用的系统资源需求从除待识别应用之外的应用中确定出多个其他应用;
91.后台运行多个其他应用,可以包括:
92.后台运行确定的多个其他应用。
93.可以理解的是,大部分电子设备均能同时支持对系统资源需求较少的多个应用的
正常运行,即大部分电子设备在运行对系统资源需求较少的多个应用时,各应用的各线程之间一般不会相互抢占资源,因此,本实施例中,电子设备可以根据应用的系统资源需求从除待识别应用之外的应用中确定出多个其他应用。
94.比如,电子设备可以将电子设备中的已安装应用中,应用的系统资源需求最多的多个应用确定为多个其他应用,并后台运行确定的多个其他应用。
95.又比如,电子设备可以将电子设备中的已安装应用中,应用的系统资源需求超过预设系统资源需求的多个应用确定为多个其他应用,并后台运行确定的多个其他应用。
96.在一可选地实施例中,线程识别方法还可以包括:
97.将多个线程中线程标识与待识别应用的应用标识相同的线程确定为待识别应用的关键线程。
98.本实施例中,考虑到待识别应用中的某些线程的线程状态与界面绘制时长并不相关,通过前述方式未能识别出其为关键线程,但是,这些线程若未能及时得到系统资源,也会存在如触控灵敏度较低、滑动视角时画面抖动等问题,基于此,电子设备可以将这些线程也确定为关键线程。比如,应用,如游戏类应用中触控响应线程若未能及时得到系统资源,会存在如触控灵敏度较低、滑动视角时画面抖动等问题,而应用,如游戏类应用中触控响应线程的线程标识(线程id)就是游戏类应用的应用标识(进程id),因此,电子设备可将待识别应用的多个线程中线程标识与待识别应用的应用标识相同的线程确定为待识别应用的关键线程。
99.在一可选地实施例中,线程识别方法还可以包括:
100.将多个线程中与触控相关的线程确定为待识别应用的关键线程。
101.比如,应用,如游戏类应用中与触控相关的线程若未能及时得到系统资源,也会存在如触控灵敏度较低、滑动视角时画面抖动等问题,而应用,如游戏类应用中与触控相关的线程为systemserver中的inputreader线程和systemserver中的inputdispatcher线程,电子设备可将该inputreader线程和inputdispatcher线程确定为待识别应用的关键线程。
102.在一可选地实施例中,线程识别方法还可以包括:
103.(1)确定调用振动功能的调用线程;
104.(2)若多个线程中包括调用线程,则将调用线程确定为待识别应用的关键线程。
105.比如,应用,如游戏类应用在运行时会存在一些振动场景,需要调用系统的振动功能完成部分振动效果,而应用的振动相应线程若未能及时调用系统的振动功能,会存在振动效果与界面的显示内容不对应的问题,因此,本实施例中,电子设备可以在底层振动相关的逻辑中,获取调用振动功能的各调用线程的线程标识(线程id),若各调用线程的线程标识中存在与待识别应用的多个线程的某线程的线程标识相同的线程标识,电子设备可将该线程标识对应的调用线程确定为关键线程。
106.在一些实施例中,考虑到目前常用游戏引擎,如unity、unreal等游戏引擎创建的线程标识是固定的,在特定游戏类应用中有鲜明的命名特征,可以直接使用白名单的方式识别,如流行的moba游戏xx荣耀使用unity引擎,线程标识为“worker thread”的线程是主线程和渲染线程创建的工作线程,因此,当待识别应用的多个线程中存在线程标识为“worker thread”的线程时,电子设备可以将该线程确定为关键线程。
107.使用wwise音频解决方案的应用都有线程标识为“nativethread”的线程,它是音
频相关线程,因此,当待识别应用的多个线程中存在线程标识为“nativethread”的线程时,电子设备可以将该线程确定为关键线程。
108.电子设备也可以将游戏类应用的渲染线程确定为关键线程。游戏类应用的渲染线程有鲜明的特征,如android系统中,可以在queuebuffer时,从libgui库中获取到渲染线程的线程标识,从而电子设备将该线程标识对应的线程确定为关键线程。
109.电子设备厂商会和游戏公司进行联合优化,使得游戏公司的游戏类应用接入厂商的sdk,将游戏已知的关键线程信息发送给电子设备,电子设备可以精确获取这部分关键线程的线程标识,从而确定出这部分关键线程。
110.考虑到某些应用对时延要求较高,因此,在内核中,电子设备可以检测线程的一些行为,统计网络数据包是否发给待识别应用的线程,若网络数据包发给待识别应用的线程,则将该线程确定为待识别应用的关键线程。
111.在一可选地实施例中,线程识别方法还可以包括:
112.(1)确定多个线程中各线程的分配优先级;
113.(2)根据分配优先级为多个线程进行资源分配。
114.比如,多个线程中的关键线程的分配优先级可以高于多个线程中与关键线程关联的关联线程的分配优先级,多个线程中与关键线程关联的关联线程的分配优先级可以高于多个线程中与关联线程关联的关联线程的分配优先级,而多个线程中与关联线程关联的关联线程的分配优先级可以高于多个线程中普通线程的分配优先级,假设多个线程中包括关键线程t1,与关键线程t1关联的关联线程t2,与关联线程t2关联的关联线程t3,与关联线程关联的关联线程t4,普通线程t5,电子设备可先为线程t1进行资源分配,再为线程t2进行资源分配,再为线程t3进行资源分配,再为线程t4进行资源分配,最后为线程t5进行资源分配。
115.又比如,多个线程中的关键线程的分配优先级、多个线程中与关键线程关联的关联线程的分配优先级,以及多个线程中与关联线程关联的关联线程的分配优先级可以相同,并高于普通线程的分配优先级,假设多个线程中包括关键线程t1,与关键线程t1关联的关联线程t2,与关联线程t2关联的关联线程t3,与关联线程关联的关联线程t4,普通线程t5,电子设备可先为线程t1、t2、t3、t4和t5进行资源分配(线程t1、t2、t3、t4和t5内部之间可通过先申请先分配资源的方式进行分配),再为线程t5进行资源分配。
116.请参阅图4,图4是本技术实施例提供的线程识别装置的结构示意图。线程识别装置200包括:信息获取模块201、相关度确定模块202和线程确定模块203。
117.信息获取模块201,应用于获取待识别应用的多个线程在其界面绘制过程中的线程状态信息,及界面的绘制时长信息。
118.相关度确定模块202,用于根据各线程的线程状态信息和绘制时长信息,确定各线程的线程状态与界面的绘制时长的第一相关度。
119.线程确定模块203,用于将大于或等于第一预设相关度的第一相关度所对应的线程确定为待识别应用的关键线程。
120.在一可选地实施例中,信息获取模块201,可以用于:获取关键线程在界面绘制过程中的休眠及等待时长信息;
121.相关度确定模块202,可以用于:根据多个线程中除关键线程之外的其他线程的线
程状态信息和休眠及等待时长信息,确定其他线程的线程状态与关键线程的休眠及等待时长的第二相关度;
122.线程确定模块203,可以用于:将大于或等于第二预设相关度的第二相关度所对应的其他线程确定为与关键线程关联的关联线程。
123.在一可选地实施例中,线程确定模块203,可以用于:确定与关联线程关联的关联线程,直至满足预设停止条件。
124.在一可选地实施例中,预设停止条件包括确定关联线程的次数达到预设次数或未确定出新的关联线程。
125.在一可选地实施例中,相关度确定模块202,可以用于:对各线程的线程状态信息与界面的绘制时长信息进行拟合,得到各线程的线程状态与界面的绘制时长的相关函数;根据相关函数中的相关系数,确定各线程的线程状态与界面的绘制时长的第一相关度。
126.在一可选地实施例中,相关度确定模块202,可以用于:按照第一相关度的大小顺序,对第一相关度进行排序;确定排序后的相邻两两第一相关度组合的差值;将差值最大的组合中较大的第一相关度确定为第一预设相关度。
127.在一可选地实施例中,线程识别装置200还可以包括应用运行模块,应用运行模块,可以用于:后台运行多个其他应用。
128.在一可选地实施例中,应用运行模块,可以用于:根据应用的系统资源需求从除待识别应用之外的应用中确定出多个其他应用;后台运行确定的多个其他应用。
129.在一可选地实施例中,线程确定模块203,可以用于:将多个线程中线程标识与待识别应用的应用标识相同的线程确定为待识别应用的关键线程。
130.在一可选地实施例中,线程确定模块203,可以用于:确定调用振动功能的调用线程;若多个线程中包括调用线程,则将调用线程确定为待识别应用的关键线程。
131.在一可选地实施例中,线程识别装置200还可以包括资源分配模块,资源分配模块,可以用于:确定多个线程中各线程的分配优先级;根据分配优先级为多个线程进行资源分配。
132.本技术实施例提供一种计算机可读的存储介质,其上存储有计算机程序,当计算机程序在计算机上执行时,使得计算机执行如本实施例提供的线程识别方法。
133.本技术实施例还提供一种电子设备,包括存储器,处理器,处理器通过调用存储器中存储的计算机程序,用于执行本实施例提供的线程识别方法。
134.例如,上述电子设备可以是诸如平板电脑或者智能手机等移动终端。请参阅图5,图5为本技术实施例提供的电子设备的结构示意图。
135.该电子设备300可以包括处理器301、存储器302等部件。本领域技术人员可以理解,图5中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
136.处理器301是电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器302内的应用程序,以及调用存储在存储器302内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。
137.存储器302可用于存储应用程序和数据。存储器302存储的应用程序中包含有可执行代码。应用程序可以组成各种功能模块。处理器301通过运行存储在存储器302的应用程
序,从而执行各种功能应用以及数据处理。
138.在本实施例中,电子设备中的处理器301会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行代码加载到存储器302中,并由处理器301来运行存储在存储器302中的应用程序,从而实现流程:
139.获取待识别应用的多个线程在其界面绘制过程中的线程状态信息,及界面的绘制时长信息;
140.根据各线程的线程状态信息和界面的绘制时长信息,确定各线程的线程状态与界面的绘制时长的第一相关度;
141.将大于或等于第一预设相关度的第一相关度所对应的线程确定为待识别应用的关键线程。
142.请参阅图6,电子设备300可以包括处理器301、存储器302、输入单元303、输出单元304等部件。
143.处理器301是电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器302内的应用程序,以及调用存储在存储器302内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。
144.存储器302可用于存储应用程序和数据。存储器302存储的应用程序中包含有可执行代码。应用程序可以组成各种功能模块。处理器301通过运行存储在存储器302的应用程序,从而执行各种功能应用以及数据处理。
145.输入单元303可用于接收输入的数字、字符信息或用户特征信息(比如指纹),以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
146.输出单元304可用于显示由用户输入的信息或提供给用户的信息以及电子设备的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。输出单元可包括显示屏,显示屏可包括显示区域。
147.在本实施例中,电子设备中的处理器301会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行代码加载到存储器302中,并由处理器301来运行存储在存储器302中的应用程序,从而实现流程:
148.获取待识别应用的多个线程在其界面绘制过程中的线程状态信息,及界面的绘制时长信息;
149.根据各线程的线程状态信息和界面的绘制时长信息,确定各线程的线程状态与界面的绘制时长的第一相关度;
150.将大于或等于第一预设相关度的第一相关度所对应的线程确定为待识别应用的关键线程。
151.在一可选地实施例中,处理器301执行将大于或等于第一预设相关度的第一相关度所对应的线程确定为待识别应用的关键线程之后,还可以执行:获取关键线程在界面绘制过程中的休眠及等待时长信息;根据多个线程中除关键线程之外的其他线程的线程状态信息和休眠及等待时长信息,确定其他线程的线程状态与关键线程的休眠及等待时长的第二相关度;将大于或等于第二预设相关度的第二相关度所对应的其他线程确定为与关键线程关联的关联线程。
152.在一可选地实施例中,处理器301执行将大于或等于第二预设相关度的第二相关
度所对应的其他线程确定为与关键线程关联的关联线程之后,还可以执行:确定与关联线程关联的关联线程,直至满足预设停止条件。
153.在一可选地实施例中,预设停止条件包括确定关联线程的次数达到预设次数或未确定出新的关联线程。
154.在一可选地实施例中,处理器301执行根据各线程的线程状态信息和界面的绘制时长信息,确定各线程的线程状态与界面的绘制时长的第一相关度时,可以执行:对各线程的线程状态信息与界面的绘制时长信息进行拟合,得到各线程的线程状态与界面的绘制时长的相关函数;根据相关函数中的相关系数,确定各线程的线程状态与界面的绘制时长的第一相关度。
155.在一可选地实施例中,处理器301执行将大于或等于第一预设相关度的第一相关度所对应的线程确定为待识别应用的关键线程之前,还可以执行:按照第一相关度的大小顺序,对第一相关度进行排序;确定排序后的相邻两两第一相关度组合的差值;将差值最大的组合中较大的第一相关度确定为第一预设相关度。
156.在一可选地实施例中,处理器301执行获取待识别应用的多个线程在其界面绘制过程中的线程状态信息,及界面的绘制时长信息之前,还可以执行:后台运行多个其他应用。
157.在一可选地实施例中,处理器301执行后台运行多个其他应用之前,还可以执行:根据应用的系统资源需求从除待识别应用之外的应用中确定出多个其他应用;处理器301执行后台运行多个其他应用时,可以执行:后台运行确定的多个其他应用。
158.在一可选地实施例中,处理器301还可以执行:将多个线程中线程标识与待识别应用的应用标识相同的线程确定为待识别应用的关键线程。
159.在一可选地实施例中,处理器301还可以执行:确定调用振动功能的调用线程;若多个线程中包括调用线程,则将调用线程确定为待识别应用的关键线程。
160.在一可选地实施例中,处理器301还可以执行:确定多个线程中各线程的分配优先级;根据分配优先级为多个线程进行资源分配。
161.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见上文针对线程识别方法的详细描述,此处不再赘述。
162.本技术实施例提供的线程识别装置与上文实施例中的线程识别方法属于同一构思,在线程识别装置上可以运行线程识别方法实施例中提供的任一方法,其具体实现过程详见线程识别方法实施例,此处不再赘述。
163.需要说明的是,对本技术实施例线程识别方法而言,本领域普通技术人员可以理解实现本技术实施例线程识别方法的全部或部分流程,是可以通过计算机程序来控制相关的硬件来完成,计算机程序可存储于一计算机可读取存储介质中,如存储在存储器中,并被至少一个处理器执行,在执行过程中可包括如线程识别方法的实施例的流程。其中,存储介质可为磁碟、光盘、只读存储器(rom,read only memory)、随机存取记忆体(ram,random access memory)等。
164.对本技术实施例的线程识别装置而言,其各功能模块可以集成在一个处理芯片中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。集成的模
块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中,存储介质譬如为只读存储器,磁盘或光盘等。
165.以上对本技术实施例所提供的一种线程识别方法、装置、存储介质及电子设备进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本技术的限制。
技术特征:1.一种线程识别方法,其特征在于,包括:获取待识别应用的多个线程在其界面绘制过程中的线程状态信息,及所述界面的绘制时长信息;根据各所述线程的所述线程状态信息和所述界面的绘制时长信息,确定各所述线程的线程状态与所述界面的绘制时长的第一相关度;将大于或等于第一预设相关度的第一相关度所对应的线程确定为所述待识别应用的关键线程。2.根据权利要求1所述的线程识别方法,其特征在于,所述将大于或等于第一预设相关度的第一相关度所对应的线程确定为所述待识别应用的关键线程之后,还包括:获取所述关键线程在所述界面绘制过程中的休眠及等待时长信息;根据多个所述线程中除所述关键线程之外的其他线程的所述线程状态信息和所述休眠及等待时长信息,确定所述其他线程的线程状态与所述关键线程的休眠及等待时长的第二相关度;将大于或等于第二预设相关度的第二相关度所对应的其他线程确定为与所述关键线程关联的关联线程。3.根据权利要求2所述的线程识别方法,其特征在于,所述将大于或等于第二预设相关度的第二相关度所对应的其他线程确定为与所述关键线程关联的关联线程之后,还包括:确定与关联线程关联的关联线程,直至满足预设停止条件。4.根据权利要求3所述的线程识别方法,其特征在于,所述预设停止条件包括确定关联线程的次数达到预设次数或未确定出新的关联线程。5.根据权利要求1所述的线程识别方法,其特征在于,所述根据各所述线程的所述线程状态信息和所述界面的绘制时长信息,确定各所述线程的线程状态与所述界面的绘制时长的第一相关度,包括:对各所述线程的所述线程状态信息与所述界面的绘制时长信息进行拟合,得到各所述线程的线程状态与所述界面的绘制时长的相关函数;根据所述相关函数中的相关系数,确定各所述线程的线程状态与所述界面的绘制时长的第一相关度。6.根据权利要求1所述的线程识别方法,其特征在于,所述将大于或等于第一预设相关度的第一相关度所对应的线程确定为所述待识别应用的关键线程之前,还包括:按照第一相关度的大小顺序,对所述第一相关度进行排序;确定排序后的相邻两两第一相关度组合的差值;将差值最大的组合中较大的第一相关度确定为所述第一预设相关度。7.根据权利要求1所述的线程识别方法,其特征在于,所述获取待识别应用的多个线程在其界面绘制过程中的线程状态信息,及所述界面的绘制时长信息之前,还包括:后台运行多个其他应用。8.根据权利要求7所述的线程识别方法,其特征在于,所述后台运行多个其他应用之前,还包括:根据应用的系统资源需求从除所述待识别应用之外的应用中确定出多个其他应用;所述后台运行多个其他应用,包括:
后台运行确定的多个其他应用。9.根据权利要求1至8任一项所述的线程识别方法,其特征在于,所述方法还包括:将多个所述线程中线程标识与所述待识别应用的应用标识相同的线程确定为所述待识别应用的关键线程。10.根据权利要求1至8任一项所述的线程识别方法,其特征在于,所述方法还包括:确定调用振动功能的调用线程;若多个所述线程中包括所述调用线程,则将所述调用线程确定为所述待识别应用的关键线程。11.根据权利要求1至8任一项所述的线程识别方法,其特征在于,所述方法还包括:确定多个所述线程中各所述线程的分配优先级;根据所述分配优先级为多个所述线程进行资源分配。12.一种线程识别装置,其特征在于,包括:信息获取模块,应用于获取待识别应用的多个线程在其界面绘制过程中的线程状态信息,及所述界面的绘制时长信息;相关度确定模块,用于根据各所述线程的所述线程状态信息和所述绘制时长信息,确定各所述线程的线程状态与所述界面的绘制时长的第一相关度;线程确定模块,用于将大于或等于第一预设相关度的第一相关度所对应的线程确定为所述待识别应用的关键线程。13.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行权利要求1至11任一项所述的线程识别方法。14.一种电子设备,其特征在于,所述电子设备包括处理器和存储器,所述存储器中存储有计算机程序,所述处理器通过调用所述存储器中存储的所述计算机程序,用于执行权利要求1至11任一项所述的线程识别方法。
技术总结本申请公开了一种线程识别方法、装置、存储介质及电子设备。该方法包括:获取待识别应用的多个线程在其界面绘制过程中的线程状态信息,及界面的绘制时长信息;根据各线程的线程状态信息和界面的绘制时长信息,确定各线程的线程状态与界面的绘制时长的第一相关度;将大于或等于第一预设相关度的第一相关度所对应的线程确定为待识别应用的关键线程。本申请可以对待识别应用的关键线程进行识别。可以对待识别应用的关键线程进行识别。可以对待识别应用的关键线程进行识别。
技术研发人员:陈新富 王凯帆 王睿
受保护的技术使用者:OPPO广东移动通信有限公司
技术研发日:2022.07.20
技术公布日:2022/11/1