[发明专利]线程死锁检测方法、装置、设备、介质和计算机程序产品在审
| 申请号: | 202111280853.1 | 申请日: | 2021-11-01 |
| 公开(公告)号: | CN114064300A | 公开(公告)日: | 2022-02-18 |
| 发明(设计)人: | 何晴 | 申请(专利权)人: | 上海浦东发展银行股份有限公司 |
| 主分类号: | G06F9/52 | 分类号: | G06F9/52 |
| 代理公司: | 广州华进联合专利商标代理有限公司 44224 | 代理人: | 黄晓庆 |
| 地址: | 200001 *** | 国省代码: | 上海;31 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 线程 死锁 检测 方法 装置 设备 介质 计算机 程序 产品 | ||
本申请涉及一种线程死锁检测方法、装置、设备、介质和计算机程序产品。所述方法包括:获取目标线程对目标锁的操作指令,在操作指令为申请目标锁的情况下,则调用预设的目标程序根据操作指令申请目标锁,得到用于表示是否成功申请目标锁的申请结果;调用目标程序根据申请结果确定目标线程的死锁结果。无需人工介入,能够实时检测目标线程申请目标锁时是否存在死锁情况,而且采用多种编程语言通用的预设的目标程序实现死锁的检测,解决了通用性较差的问题,并且无需更改程序代码,降低了安全风险。本方法兼顾了实时性、通用性和安全性。
技术领域
本申请涉及计算机技术领域,特别是涉及一种线程死锁检测方法、装置、设备、介质和计算机程序产品。
背景技术
在计算机系统运行过程中会出现线程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。
现有技术对如何检测死锁可以通过修改Pthreads库方法、pstack结合gdp以及了Java特定的线程死锁检测机制实现Linux系统运行过程中是否出现死锁状态。
然而,目前的线程死锁检测方式存在无法兼顾检测的实时性、安全性和通用性的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种能够兼顾检测的实时性、安全性和通用性的线程死锁检测方法、装置、设备、介质和计算机程序产品。
第一方面,本申请提供了一种线程死锁检测方法。该方法包括:
获取目标线程对目标锁的操作指令;
在操作指令为申请目标锁的情况下,则调用预设的目标程序根据操作指令申请目标锁,得到申请结果;申请结果用于表示是否成功申请目标锁;
调用目标程序根据申请结果确定目标线程的死锁结果。
在其中一个实施例中,调用预设的目标程序根据操作指令申请目标锁,得到申请结果,包括:
根据操作指令,调用预设的目标程序查找线程图中目标锁的线程持有状态;
根据目标锁的线程持有状态,确定目标线程申请目标锁的申请结果。
在其中一个实施例中,根据目标锁的线程持有状态,确定目标线程申请目标锁的申请结果,包括:
若目标锁的持有状态为被已有线程持有,则申请结果为申请失败;
若目标锁的持有状态为未被已有线程持有,则申请结果为申请成功。
在其中一个实施例中,根据申请结果,确定目标线程的死锁结果,包括:
若申请结果为申请成功,则确定目标线程的死锁结果为无死锁,并将目标线程和目标锁的对应关系更新至线程图中;
若申请结果为失败,则检测线程图中是否存在有向循环图,得到检测结果;
根据检测结果确定目标线程的死锁结果。
在其中一个实施例中,根据检测结果确定目标线程的死锁结果,包括:
若检测结果为线程图中存在有向循环图,则确定死锁结果为死锁;
若检测结果为线程图中不存在有向循环图,则确定死锁结果为无死锁。
在其中一个实施例中,操作指令表示释放目标锁;方法还包括:
根据操作指令,调用预设的目标程序删除线程图中目标线程与目标锁之间的对应关系。
第二方面,本申请还提供了一种线程死锁检测装置。该装置包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海浦东发展银行股份有限公司,未经上海浦东发展银行股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111280853.1/2.html,转载请声明来源钻瓜专利网。





