【技术实现步骤摘要】
线程持锁方法、装置、电子设备及计算机可读介质
[0001]本申请涉及计算机
,更具体地,涉及一种线程持锁方法、装置、电子设备及计算机可读介质。
技术介绍
[0002]随着移动互联网的发展,手机已经成了人们随身必备工具之一。除了基本的功能,手机的流畅性和续航也是核心需求。目前手机平台上的移动APP的功能越来越复杂,产生越来越多的高并发的场景,为了应对这些并发场景,安卓手机平台的l inux内核、虚拟机、c库、JAVA库中提供了很多的锁机制来保证在这些并发场景中的逻辑正确性。然而,目前的锁机制中确定持锁的线程的方式表现不佳。
技术实现思路
[0003]本申请提出了一种线程持锁方法、装置、电子设备及计算机可读介质,以改善上述缺陷。
[0004]第一方面,本申请实施例提供了一种线程持锁方法,其特征在于,包括:确定当前待持锁的每个待选线程和所述待持锁的类型;基于所述待持锁的类型从每个所述待选线程对应的多个属性信息中确定至少一个属性信息,作为目标信息,其中,所述多个属性信息包括等锁时长、临界区长度、持锁绝限 ...
【技术保护点】
【技术特征摘要】
1.一种线程持锁方法,其特征在于,包括:确定当前待持锁的每个待选线程和所述待持锁的类型;基于所述待持锁的类型从每个所述待选线程对应的多个属性信息中确定至少一个属性信息,作为目标信息,其中,所述多个属性信息包括等锁时长、临界区长度、持锁绝限时间和线程类型;基于各个所述待选线程的目标信息,从多个所述待选线程中确定至少一个持锁优先级满足预设条件的所述待选线程作为目标线程;控制所述目标线程进入目标线程的临界区持锁。2.根据权利要求1所述的方法,其特征在于,所述持锁绝限时间为等锁起始时刻与持锁时延阈值之和,持锁时延阈值基于待选线程与用户感知的关联程度而确定,待选线程与用户感知的关联程度与该线程的持锁时延阈值负相关。3.根据权利要求1所述的方法,其特征在于,所述临界区长度基于所述临界区的代码指令条数以及运行该临界区对应的待选线程的处理器的运行参数而确定。4.根据权利要求1
‑
3任一所述的方法,其特征在于,所述待持锁的类型为第一互斥锁,所述目标信息包括等锁时长,所述第一互斥锁对应的等待队列包括第一队列,各个所述待选线程位于所述第一队列内,所述第一队列从队首至队尾的各个线程的等锁时长依次降低,所述基于各个所述待选线程的目标信息,从多个所述待选线程中确定至少一个所述待选线程作为目标线程,包括:将所述第一队列中的队首的线程作为第一线程;若所述第一线程的等锁时长大于预设时长,则将所述第一线程作为目标线程。5.根据权利要求4所述的方法,其特征在于,所述目标信息还包括延时敏感度,所述等待队列还包括第二队列,所述第二队列用于存放各个所述待选线程中与用户相关的线程,所述第二队列从队首至队尾的各个线程的持锁绝限时间依次增大,所述方法还包括:若所述第一线程的等锁时长不大于预设时长,将所述第二队列中的队首的线程作为目标线程。6.根据权利要求5所述的方法,其特征在于,所述目标信息还包括临界区长度,所述等待队列包括第三队列,各个所述待选线程位于所述第三队列内,所述第三队列从队首至队尾的各个线程的临界区长度依次增大,所述方法,还包括:若所述第一线程的等锁时长不大于预设时长且所述第二队列中不存在线程,则将所述第三队列中的队首的线程作为目标线程。7.根据权利要求1
‑
3任一所述的方法,其特征在于,所述待持锁的类型为自旋锁,所述目标信息包括等锁时长和临界区长度,多个所述待选线程位于所述自旋锁对应的自旋队列中,所述基于各个所述待选线程的目标信息,从多个所述待选线程中确定至少一个所述待选线程作为目标线程,包括:若多个所述待选线程中存在临界区长度小于预设长度的待选线程,则从该临界区长度小于预设长度的待选线程中确定等锁时长最大的待选线程作为目标线程。8.根据权利要求7所述的方法,其特征在于,所述自旋队列包括主自旋队列,所述主自旋队列用于存放各个所述待选线程中临界区长度小于预设长度的线程,且所述主自旋队列从队首至队尾的各个线程的等锁时长依次降低,所述从多个所述待选线程中确定临界区长
度小于预设长度的且等锁时长最大的线程作为目标线程,包括:若所述主自旋队列中存在临界区长度小于预设长度的线程线程,则将所述主自旋队列的队首的线程作为所述目标线程,其中,所述目标线程的持锁优先级最高。9.根据权利要求7所述的方法,其特征在于,还包括:若多个所述待选线程中不存在临界区长度小于预设长度的线程,则从多个所述待选线程中确定临界区长度不小于预设长度的线程且等锁时长最大的线程作为目标线程。10.根据权利要求9所述的方法,其特征在于,所述自旋队列包括主自旋队列和副自旋队列,所述主自旋队列用于存放各个所述待选线程中临界区长度小于预设长度的线程,所述副自旋队列用于存放各个所述待选线程中临界区长度不小于预设长度的线程,且所述主自旋队列和副自旋队列均为从队首至队尾的各个线程的等锁时长依次降低,所述若多个所述待选线程中不存在临界区长度小于预设长度的线程,则从多个所述待选线程中确定临界区长度不小于预设长度的线程且等锁时长最大的线程作为目标线程,包括:若所述主自旋队列中不存在线程,则将所述副自旋队列的队首的线程作为所述目标线程。11.根据权利要求1
‑
3任一所述的方法,其特征在于,所述待持锁的类型为第一读写锁,所述目标信息包括线程类型,多个所述待选线程位于所述第一读写锁对应的等待队列中,所述基于各个所述待选线程的目标信息,从多个所述待选线程中确定至少一个所述待选线程作为目标线程,包括:在当前临界区内的线程类型均为读类型且所述等待队列中存在写类型的线程时,确定所述等待队列中请求持锁的待选线程,作为第三线程;若所述第三线程与用户感知相关且线程类型是读类型,则将所述第三线程作为目标线程,其中,所述目标线程的持锁优先级最高。12.根据权利要求11所述的方法,其特征在于,所述目标信息还包括等锁时长,所述若所述第三线程与用户感知相关且线程类型是读类型,则将所述第三线程作为目标线程,包括:若所述第三线程与用户感知相关且线程类型是读类型,则在所述等待队列中不存在等锁时长大于预设时长的线程且当前临界区内读类型的线程不大于预设最大值的情况下,将所述第三线程作为目标线程。13.根据权利要求11所述的方法,其特征在于,所述等待队列内的各个线程基于从队首至队尾的顺序进入临界区,所述在当前临界区内的线程类型均为读类型且所述等待队列中存在写类型的线程时,确定所述等待队列中请求持锁的待选线程之前,还包括:在所述等待队列中按照从队首至队尾的第一方向,查找第一个等锁时长小于预设时长的线程,作为第四线程;基于当前待持锁的所述待选线程的线程类型以及所述第四线程的线程类型,将所述待选线程插入所述等待队列中。14.根据权利要求...
【专利技术属性】
技术研发人员:郭健,
申请(专利权)人:广东明创软件科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。