锁资源调度方法及装置制造方法及图纸

技术编号:39063976 阅读:18 留言:0更新日期:2023-10-12 19:56
本申请实施例提供一种锁资源调度方法及装置,该方法包括:在应用程序的启动阶段,检测应用程序的目标线程是否进入不可中断的睡眠状态。若是,则确定目标线程所等待的目标锁。确定持有目标锁的持锁线程,并增加持锁线程的时间片。通过在确定应用程序的目标线程进入D状态的时候,确定目标线程正在等待的目标锁,并且针对持有目标锁的持锁线程增加时间片,以使得持锁线程可以尽快完成其正在执行的任务,从而释放目标锁,那么相应的目标线程就可以尽快的获得目标锁从而解除D状态,进而有效的缩短应用程序的启动时长。应用程序的启动时长。应用程序的启动时长。

【技术实现步骤摘要】
锁资源调度方法及装置


[0001]本申请涉及终端
,尤其涉及锁资源调度方法及装置。

技术介绍

[0002]在应用程序的启动阶段,可能会出现应用程序的主线程进入D状态的情况,其中D状态即不可中断的睡眠状态。
[0003]其中,在应用程序的启动阶段,若应用程序的主线程进入D状态,会导致应用程序的启动时长增加,目前尚没有有效的解决方案。

技术实现思路

[0004]本申请实施例提供一种锁资源调度方法及装置,应用于终端

[0005]第一方面,本申请实施例提出一种锁资源调度方法。该方法包括:
[0006]在应用程序的启动阶段,检测所述应用程序的目标线程是否进入不可中断的睡眠状态;
[0007]若是,则确定所述目标线程所等待的目标锁;
[0008]确定持有所述目标锁的持锁线程,并增加所述持锁线程的时间片。
[0009]这种实施方式中,通过在确定应用程序的目标线程进入D状态的时候,确定目标线程正在等待的目标锁,并且针对持有目标锁的持锁线程增加时间片,以使得持锁线程可以尽快完成其正在执行的任务,从而释放目标锁,那么相应的目标线程就可以尽快的获得目标锁从而解除D状态,进而有效的缩短应用程序的启动时长。
[0010]在一些实现方式中,所述增加所述持锁线程的时间片,包括:
[0011]获取向所述持锁线程所分配时间片的初始数量;
[0012]将所述初始数量增加N,得到中间数量,所述N为大于或等于1的整数;
[0013]若所述中间数量小于或等于预设阈值,则确定所述持锁线程根据所述中间数量个时间片,完成其正在执行的指令所需的执行时长;
[0014]若所述执行时长小于或等于预设时长,则将向所述持锁线程所分配的时间片的数量增加为所述中间数量。
[0015]这种实施方式中,通过判断中间数量是否小于或等于预设阈值,在确定中间数量小于或等于预设阈值的情况下,再进行后续的处理,以保证针对持锁线程增加时间片,不会影响到其余线程的正常工作。同时,在确定将持锁线程的时间片增加为中间数量是可行的之后,进一步的在确定执行时长小于或等于预设时长的情况下,将持锁线程的时间片的数量增加为中间数量,从而可以在保证其余线程的正常工作的前提下,使得持锁线程尽快的完成其正在执行的指令。
[0016]在一些实现方式中,所述方法还包括:
[0017]若所述执行时长大于所述预设时长,则将所述中间数量确定为新的初始数量,并重复执行将初始数量增加N得到中间数量,并在所述中间数量小于或等于预设阈值的情况
下,确定所述中间数量对应的执行时长的操作,直至所述执行时长小于或等于所述预设时长。
[0018]这种实施方式中,在执行时长仍然大于预设时长的情况下,再进行下一轮的调整,也就是说本实施例中可以采用多轮调整的方式,逐步的确定最终的中间数量,以实现确定的中间数量在可以实现线程尽快完成指令的前提下,尽可能的占用较少的时间片,减少对其余线程所造成的影响。
[0019]在一些实现方式中,所述增加所述持锁线程的时间片之后,所述方法还包括:
[0020]所述持锁线程释放所述目标锁;
[0021]向所述目标线程分配所述目标锁,以解除所述目标线程的不可中断的睡眠状态。
[0022]在一些实现方式中,所述向所述目标线程分配所述目标锁,包括:
[0023]根据所述目标线程的优先级,向所述目标线程分配所述目标锁;或者,
[0024]根据所述目标线程的参照时刻,向所述目标线程分配所述目标锁,所述参照时刻包括如下中的至少一种:所述目标线程对应的应用程序的启动时刻、所述目标线程切换到前台的时刻。
[0025]这种实施方式中,基于相应的策略在等待目标锁的多个线程中,选择合适的线程分配目标锁,从而可以有效的保证目标锁的分配合理性,以及针对系统整体而言,针对其中的各个应用程序都可以有效的缩短启动时间。
[0026]在一些实现方式中,所述持锁线程释放所述目标锁之后,所述方法还包括:
[0027]将向所述持锁线程所分配的时间片的数量,恢复为所述初始数量。
[0028]这种实施方式中,在持锁线程释放目标锁之后,就恢复持锁线程的时间片数量,从而可以有效保证在系统中的时间片的分布合理性,避免持锁线程在不必要的情况下也占有大量的时间片。
[0029]在一些实现方式中,所述增加所述持锁线程的时间片,包括:
[0030]确定所述持锁线程所属的目标分组,所述目标分组中包括至少一个线程;
[0031]针对所述目标分组增加时间片。
[0032]这种实施方式中,通过对持锁线程所在的目标分组增加时间片,从而保证针对以分组为时间片调整单位的系统,也可以有效的实现时间片的调整。
[0033]在一些实现方式中,所述确定所述目标线程所等待的目标锁,包括:
[0034]检测所述目标线程是否在等待锁资源;
[0035]若是,则确定所述目标线程所等待的目标锁。
[0036]在这种实施方式中,通过首先检测目标线程是否在等待锁资源,确定在等待锁资源的时候,才确定目标锁,从而可以有效的保证后续执行的等待所资源的有效性。
[0037]第二方面,本申请实施例提供一种锁资源调度装置。该装置包括:
[0038]检测模块,用于在应用程序的启动阶段,检测所述应用程序的目标线程是否进入不可中断的睡眠状态;
[0039]确定模块,用于若是,则确定所述目标线程所等待的目标锁;
[0040]所述确定模块,还用于确定持有所述目标锁的持锁线程;
[0041]处理模块,用于增加所述持锁线程的时间片。
[0042]在一些实现方式中,所述处理模块具体用于:
[0043]获取向所述持锁线程所分配时间片的初始数量;
[0044]将所述初始数量增加N,得到中间数量,所述N为大于或等于1的整数;
[0045]若所述中间数量小于或等于预设阈值,则确定所述持锁线程根据所述中间数量个时间片,完成其正在执行的指令所需的执行时长;
[0046]若所述执行时长小于或等于预设时长,则将向所述持锁线程所分配的时间片的数量增加为所述中间数量。
[0047]在一些实现方式中,所述处理模块还用于:
[0048]若所述执行时长大于所述预设时长,则将所述中间数量确定为新的初始数量,并重复执行将初始数量增加N得到中间数量,并在所述中间数量小于或等于预设阈值的情况下,确定所述中间数量对应的执行时长的操作,直至所述执行时长小于或等于所述预设时长。
[0049]在一些实现方式中,所述处理模块还用于:
[0050]在所述增加所述持锁线程的时间片之后,所述持锁线程释放所述目标锁;
[0051]向所述目标线程分配所述目标锁,以解除所述目标线程的不可中断的睡眠状态。
[0052]在一些实现方式中,所述处理模块具体用于:
[0053]根据所述目标线程的优先本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种锁资源调度方法,其特征在于,包括:在应用程序的启动阶段,检测所述应用程序的目标线程是否进入不可中断的睡眠状态;若是,则确定所述目标线程所等待的目标锁;确定持有所述目标锁的持锁线程,并增加所述持锁线程的时间片。2.根据权利要求1所述的方法,其特征在于,所述增加所述持锁线程的时间片,包括:获取向所述持锁线程所分配时间片的初始数量;将所述初始数量增加N,得到中间数量,所述N为大于或等于1的整数;若所述中间数量小于或等于预设阈值,则确定所述持锁线程根据所述中间数量个时间片,完成其正在执行的指令所需的执行时长;若所述执行时长小于或等于预设时长,则将向所述持锁线程所分配的时间片的数量增加为所述中间数量。3.根据权利要求2所述的方法,其特征在于,所述方法还包括:若所述执行时长大于所述预设时长,则将所述中间数量确定为新的初始数量,并重复执行将初始数量增加N得到中间数量,并在所述中间数量小于或等于预设阈值的情况下,确定所述中间数量对应的执行时长的操作,直至所述执行时长小于或等于所述预设时长。4.根据权利要求1

3任一项所述的方法,其特征在于,所述增加所述持锁线程的时间片之后,所述方法还包括:所述持锁线程释放所述目标锁;向所述目标线程分配所述目标锁,以解除所述目标线程的不可中断的睡眠状态。5.根据权利要求4所述的方法,其特征在于,所述向所述目标线程分配所述目标锁,包括:根据所述目标线程的优先级,向所述目标线程分配所述目标锁;或者,根据所述目标线程的参照时刻,向所述目标线程分配所述目标锁,所述参照时刻包括如下中的至少一种:所述目标线程对应的应用程序的启动时刻...

【专利技术属性】
技术研发人员:李淳李耀宗
申请(专利权)人:荣耀终端有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1