调整应用关键线程的方法、电子设备及机器可读存储介质与流程
未命名
07-23
阅读:107
评论:0

1.本发明涉及应用线程优先级领域,特别是涉及一种调整应用关键线程的方法、电子设备及机器可读存储介质。
背景技术:
2.由于android系统对应用启动限制不是很严格,在系统拥有大量后台应用或presistent(永久性)应用且都通过init.rc配置开机启动时,将出现大量应用的并发启动,而由于android对启动阶段的应用ui线程优先级配置很高,对如thread pool,async等应用子线程优先级普遍设置很低。因此,后台启动应用会严重抢占前台应用的cpu资源,从而导致前台应用关键子线程得不到及时调度,前台应用运行受到影响。
技术实现要素:
3.本发明的目的是使前台应用程序的关键线程得到及时调度。
4.特别地,本发明提供了一种调整应用关键线程优先级的方法,其包括:
5.前台应用程序启动时,创建相应的优先级设置子线程;
6.所述优先级设置子线程确定所述前台应用程序的关键子线程;
7.所述优先级设置子线程将所述关键子线程设置为高优先级线程。
8.可选地,所述创建相应的优先级设置子线程后,还包括:将所述前台应用程序的主线程的第一线程标识符传递给所述优先级设置子线程;以及
9.所述优先级设置子线程确定所述前台应用程序的关键子线程,包括:
10.所述优先级设置子线程根据所述第一线程标识符确定相应的任务目录;
11.所述优先级设置子线程周期性遍历所述任务目录,从中确定关键任务;
12.所述关键任务对应的子线程创建后,所述优先级设置子线程获取所述子线程的第二线程标识符且将所述子线程确定为关键子线程。
13.可选地,所述优先级设置子线程在所述任务目录中确定关键任务,包括:
14.所述优先级设置子线程根据预设的关键任务表在所述任务目录中确定关键任务。
15.可选地,所述第一线程标识符为pid:mainpid;
16.所述任务目录为/proc/mainpid/task/comm。
17.可选地,所述优先级设置子线程将所述关键子线程设置为高优先级线程后,所述方法还包括:
18.在所述关键子线程执行期间,所述优先级设置子线程对所述关键子线程执行周期性轮询,当确定所述关键子线程被降低优先级时,所述优先级设置子线程将所述关键子线程重新设定为高优先级线程。
19.可选地,所述优先级设置子线程调用系统的setpriority接口将所述关键子线程设置为高优先级线程。
20.根据本发明的另一个方面,还提供了一种电子设备,其包括:
21.存储器和处理器,所述存储器内存储有控制程序,所述控制程序被所述处理器执行时用于实现根据上述任一项所述的调整应用关键线程优先级的方法。
22.根据本发明的再一个方面,还提供了一种机器可读存储介质,其上存储有机器可执行程序,其中
23.所述机器可执行程序被处理器执行时用于实现根据上述任一项所述的调整应用关键线程优先级的方法。
24.本发明提出的调整应用关键线程优先级的方法中,前台应用程序启动时,便创建相应的优先级设置子线程,由优先级设置子线程确定前台应用程序的关键子线程,再将关键子线程设置为高优先级线程,从而关键子线程可得到及时调度。
25.上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
26.根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
附图说明
27.后文将参照附图以示例性而非限制性的方式详细描述本发明的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。附图中:
28.图1是根据本发明一个实施例的调整应用关键线程优先级的方法的流程示意图;
29.图2是根据本发明一个实施例的电子设备的示意性结构框图。
30.图3是根据本发明一个实施例的机器可读存储介质的示意性结构框图。
具体实施方式
31.下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
32.需要说明的是,在不冲突的前提下本发明实施例及可选实施例中的技术特征可以相互结合。
33.图1是根据本发明一个实施例的调整应用关键线程优先级的方法的流程示意图。参见图1所示,本发明提出的调整应用关键线程优先级的方法可以至少包括如下步骤s102-s106。
34.步骤s102:前台应用程序启动时,创建相应的优先级设置子线程。
35.本步骤中,前台应用指的是与后台应用相对的应用;前台应用程序启动具体是前台应用程序的主线程启动,主线程为ui线程。
36.本步骤中,优先级设置子线程可选创建在前台应用的主线程的目录下,前台应用程序与优先级设置子线程一一对应。
37.步骤s104:优先级设置子线程确定前台应用程序的关键子线程。
38.步骤s106:优先级设置子线程将关键子线程设置为高优先级线程。
39.本实施例中,前台应用程序启动时,便创建相应的优先级设置子线程,由优先级设置子线程确定前台应用程序的关键子线程,再将关键子线程设置为高优先级线程,从而关键子线程可得到及时调度。
40.在本发明一个实施例中,步骤s102后,该方法还包括:将前台应用程序的主线程的第一线程标识符传递给优先级设置子线程。
41.其中,第一线程标识符可选以pid:mainpid表示。
42.在本发明一个实施例中,上述步骤s104提到的优先级设置子线程确定前台应用程序的关键子线程,包括:优先级设置子线程根据第一线程标识符确定相应的任务目录;优先级设置子线程周期性遍历任务目录,从中确定关键任务;关键任务对应的子线程创建后,优先级设置子线程获取子线程的第二线程标识符(pid:xpid)且将子线程确定为关键子线程。
43.其中,任务目录为/proc/mainpid/task/comm。优先级子线程可选每隔10ms遍历一次任务目录。
44.需要说明地是,周期时长可根据实际需要设置,本发明不做特别限定。
45.可选地,优先级设置子线程根据预设的关键任务表在任务目录中确定关键任务。其中,关键任务表可选存储有关键任务的名称,从而优先级设置子线程可根据关键任务表中的关键任务名称在任务目录中确定关键任务。
46.其中,关键任务可选是以对前台应用的主线程运行是否存在影响确定的,具体地,对前台应用的主线程运行存在影响则确定为关键任务。
47.在本发明一个实施例中,上述步骤s106中,优先级设置子线程具体调用安卓系统的setpriority接口将关键子线程设置为高优先级线程。
48.在本发明一个实施例中,上述步骤s106后,该方法还包括:关键子线程执行期间,优先级设置子线程对关键子线程执行周期性轮询,当确定所关键子线程被降低优先级时,优先级设置子线程将关键子线程重新设定为高优先级线程。
49.由于前台应用程序可能会篡改关键子线程的优先级,因此,在关键子线程执行期间,优先级设置子线程对关键子线程执行周期性轮询,当确定所关键子线程被降低优先级时,优先级设置子线程将关键子线程重新设定为高优先级线程,从而可保证关键子线程一直处于高优先级。
50.另外,在本发明的一个实施例中,也可以通过将关键子线程执行线程锁定,而防止优先权被篡改。
51.图2是根据本发明一个实施例的电子设备的示意性结构框图。参见图2所示,基于同一发明构思,本发明还提出了一种电子设备200,电子设备200包括存储器210和处理器220,存储器210内存储有控制程序211,控制程序211被处理器220执行时用于实现根据上述任一实施例中的调整应用关键线程优先级的方法。
52.图3是根据本发明一个实施例的机器可读存储介质的示意性结构框图。参见图3所示,基于同一发明构思,本发明还提出了一种机器可读存储介质300,其上存储有机器可执行程序310,其中,机器可执行程序310被处理器执行时用于实现根据上述任一项中的调整应用关键线程优先级的方法。
53.机器可读存储介质300可以是可以保持和存储由指令执行设备使用的指令的有形
设备。机器可读存储介质300例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。机器可读存储介质300的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(randomaccess memory,ram)、只读存储器(read only memory,rom)、可擦式可编程只读存储器(electrically programmable read-only-memory,eprom或闪存)、静态随机存取存储器(static random-access memory,sram)、便携式压缩盘只读存储器(compact disc read-only memory,cd-rom)、数字多功能盘(digital video disc,dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。
54.这里所描述的机器可执行程序310或代码可以从机器可读存储介质300下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机程序,并转发该计算机程序,以供存储在各个计算/处理设备中的机器可读存储介质300中。
55.用于执行本技术操作的机器可执行程序310可以是汇编指令、指令集架构(instruction set architecture,isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如smalltalk、c++等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。计算机程序可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(local area network,lan)或广域网(widearea network,wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机程序的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(field-programmablegate array,fpga)或可编程逻辑阵列(programmable logic array,pla),该电子电路可以执行计算机程序,从而实现本技术的各个方面。
56.这里参照根据本技术实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本技术的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序实现。
57.这些机器可执行程序310可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些机器可执行程序310存储在机器可读存储介质300中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有机器可执行程序310的机器可读存储介质300则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
58.至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示
例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。
技术特征:
1.一种调整应用关键线程优先级的方法,包括:前台应用程序启动时,创建相应的优先级设置子线程;所述优先级设置子线程确定所述前台应用程序的关键子线程;所述优先级设置子线程将所述关键子线程设置为高优先级线程。2.根据权利要求1所述的方法,其特征在于所述创建相应的优先级设置子线程后,还包括:将所述前台应用程序的主线程的第一线程标识符传递给所述优先级设置子线程;以及所述优先级设置子线程确定所述前台应用程序的关键子线程,包括:所述优先级设置子线程根据所述第一线程标识符确定相应的任务目录;所述优先级设置子线程周期性遍历所述任务目录,从中确定关键任务;所述关键任务对应的子线程创建后,所述优先级设置子线程获取所述子线程的第二线程标识符且将所述子线程确定为关键子线程。3.根据权利要求2所述的方法,其特征在于所述优先级设置子线程在所述任务目录中确定关键任务,包括:所述优先级设置子线程根据预设的关键任务表在所述任务目录中确定关键任务。4.根据权利要求2所述的方法,其特征在于所述第一线程标识符为pid:mainpid;所述任务目录为/proc/mainpid/task/comm。5.根据权利要求1所述的方法,其特征在于所述优先级设置子线程将所述关键子线程设置为高优先级线程后,所述方法还包括:在所述关键子线程执行期间,所述优先级设置子线程对所述关键子线程执行周期性轮询,当确定所述关键子线程被降低优先级时,所述优先级设置子线程将所述关键子线程重新设定为高优先级线程。6.根据权利要求1所述的方法,其特征在于所述优先级设置子线程调用系统的setpriority接口将所述关键子线程设置为高优先级线程。7.一种电子设备,包括:存储器和处理器,所述存储器内存储有控制程序,所述控制程序被所述处理器执行时用于实现根据权利要求1至6中任一项所述的调整应用关键线程优先级的方法。8.一种机器可读存储介质,其上存储有机器可执行程序,其中所述机器可执行程序被处理器执行时用于实现根据权利要求1至6中任一项所述的调整应用关键线程优先级的方法。
技术总结
本发明提供了一种调整应用关键线程优先级的方法、电子设备及机器可读存储介质,本发明提供的方法中,前台应用程序启动时,便创建相应的优先级设置子线程,由优先级设置子线程确定前台应用程序的关键子线程,再将关键子线程设置为高优先级线程,从而关键子线程可得到及时调度。及时调度。及时调度。
技术研发人员:梁辉
受保护的技术使用者:亿咖通(湖北)技术有限公司
技术研发日:2023.04.21
技术公布日:2023/7/22
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/