【技术实现步骤摘要】
一种线程死锁检测方法及装置
[0001]本公开涉及计算机
,具体而言,涉及一种线程死锁检测方法及装置。
技术介绍
[0002]当两条线程同时访问一个类的时候,可能会带来一些问题。并发线程访问可能会带来内存泄漏、程序不可控等问题。不管是线程间的通讯还是线程共享数据都需要使用锁机制控制并发代码产生的问题。在一个进程访问一个类时,会生成一个该类的互斥锁,只有持有该互斥锁的进程才能够访问其对应的类,当一个进程使用结束后,会将该互斥锁传递给下一个等待使用该类的线程,没有持有锁的线程若需要使用该类会进入等待状态,直到持有该类对应的互斥锁。
[0003]死锁是并发编程中一种常见的异常情况。互斥锁通常用于控制多线程对资源的访问及修改,程序运行期间往往有多个锁,在一些特殊场景下,线程之间会相互等锁,形成闭环,导致死锁。死锁通常需要专业的业务人员进行分析,较难处理。
技术实现思路
[0004]本公开实施例至少提供一种线程死锁检测方法及装置。
[0005]第一方面,本公开实施例提供了一种线程死锁检测方法,包括 ...
【技术保护点】
【技术特征摘要】
1.一种线程死锁检测方法,其特征在于,包括:获取多个处于等待状态的目标线程在当前执行的目标指令的地址;基于所述目标指令的地址,确定所述目标线程的等锁符号;基于所述等锁符号的类型,查找与所述等锁符号匹配的互斥锁的持有线程的标识信息;基于查找到的所述持有线程的标识信息,生成所述目标线程与其他线程之间的等待关系;基于所述等待关系,生成针对所述目标线程的死锁检测信息。2.根据权利要求1所述的方法,其特征在于,通过以下步骤获取所述目标线程当前执行指令的地址:访问各个所述目标线程的程序计数寄存器,获取各个所述目标线程当前执行的指令的地址。3.根据权利要求1所述的方法,其特征在于,所述基于所述目标指令的地址,确定所述目标线程的等锁符号,包括:针对任一目标线程,将所述目标线程当前执行指令的地址符号化,并从符号化的地址中查找所述等锁符号。4.根据权利要求3所述的方法,其特征在于,所述基于所述等锁符号的类型,查找与所述等锁符号匹配的互斥锁的持有线程的标识信息,包括:基于查找到的等锁符号的类型,确定所述等锁符号对应的参数存储位置;从所述参数存储位置中查找与所述等锁符号匹配的互斥锁的持有线程的标识信息。5.根据权利要求4所述的方法,其特征在于,所述从所述参数存储位置中查找与所述等锁符号匹配的互斥锁的持有线程的标识信息,包括:基于所述等锁符号的类型,确定所述等锁符号对应的互斥锁的类型信息;基于所述等锁符号对应的互斥锁的类型信息,从所述参数存储位置中与所述互斥锁的类型信息匹配的锁结构信息;利用与所述锁的类型信息匹配的解析方式,从所述锁结构信息中解析出所述持有线程的标识信息。6.根据权利要求1所述的方法,...
【专利技术属性】
技术研发人员:王殷辉,骆豪,吴凯凯,
申请(专利权)人:北京字节跳动网络技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。