[发明专利]接口函数定位方法、装置及网络设备有效
申请号: | 201910680765.7 | 申请日: | 2019-07-26 |
公开(公告)号: | CN110427272B | 公开(公告)日: | 2022-07-01 |
发明(设计)人: | 杨亚伟 | 申请(专利权)人: | 新华三技术有限公司成都分公司 |
主分类号: | G06F9/52 | 分类号: | G06F9/52;G06F9/54 |
代理公司: | 北京博思佳知识产权代理有限公司 11415 | 代理人: | 高萍 |
地址: | 610000 四川省成都市中国(四川)自*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 接口 函数 定位 方法 装置 网络设备 | ||
本发明提供一种接口函数定位方法、装置及网络设备。所述网络设备运行多个线程,多个线程中的第一线程通过接口函数获取用于访问数据的信号量,并通过信号量访问数据,待访问数据的第二线程需等待信号量被释放后,获取信号量并访问数据,网络设备为每一个线程分配对应的信号栈,信号栈用于存放线程已获取的信号量,该方法包括:判断第一线程对应的信号栈的栈顶信号量是否死锁;若栈顶信号量死锁,从本地记录的信号量与接口函数的对应关系中,查找与栈顶信号量对应的接口函数;将栈顶信号量对应的接口函数,确定为问题接口函数。通过本发明可快速定位到问题接口函数。
技术领域
本发明涉及通信技术领域,尤其涉及一种接口函数定位方法、装置及网络设备。
背景技术
网络设备普遍支持多线程处理。当多个线程同时访问同一数据时,会发生访问冲突。为了避免冲突,通常引入信号量机制。
线程通过接口函数获取信号量,并通过获取的信号量访问数据。在同一时刻,只允许一个线程获取信号量并访问数据,其它线程必须等到信号量释放后,才可以获取信号量并访问数据。
若获取到信号量的线程遗漏释放信号量,则其它线程将持续处于等待状态,无法继续执行。又或者,多个线程互相申请对方已获取到的信号量,也会导致线程无法继续执行。以上情况均称为信号量死锁。
在发生信号量死锁时,需要定位是哪一个接口函数出现问题。目前主要通过逐一排查需要使用该死锁信号量的接口函数来定位,该定位方式效率较低。
发明内容
有鉴于此,本发明为了解决现有信号量死锁时定位问题接口函数的效率较低的问题,提出一种接口函数定位方法、装置及网络设备,用以在信号量死锁时,快速定位到问题接口函数。
为实现上述发明目的,本发明提供了如下技术方案:
第一方面,本发明提供一种接口函数定位方法,应用于网络设备,所述网络设备运行多个线程,所述多个线程中的第一线程通过接口函数获取用于访问数据的信号量,并通过所述信号量访问所述数据,待访问所述数据的第二线程需等待所述信号量被释放后,获取所述信号量并访问所述数据,所述网络设备为每一个线程分配对应的信号栈,所述信号栈用于存放线程已获取的信号量,所述方法包括:
判断所述第一线程对应的信号栈的栈顶信号量是否死锁;
若所述栈顶信号量死锁,从本地记录的信号量与接口函数的对应关系中,查找与所述栈顶信号量对应的接口函数;
将所述栈顶信号量对应的接口函数,确定为问题接口函数。
可选的,所述方法还包括:
若所述第一线程通过第一接口函数获取到第一信号量,记录所述第一信号量与所述第一接口函数的对应关系;
将所述第一信号量压入所述第一线程对应的信号栈中。
可选的,所述判断所述第一线程对应的信号栈的栈顶信号量是否死锁,包括:
以预设时间间隔,获取所述第一线程对应的信号栈的栈顶信号量;
若此次获取的栈顶信号量与上一次获取的栈顶信号量相同,累计次数;
若所述次数大于预设的次数阈值,确定所述栈顶信号量死锁。
可选的,若所述第一线程释放已获取的第二信号量,所述判断所述第一线程对应的信号栈的栈顶信号量是否死锁,包括:
获取所述栈顶信号量;
若所述第二信号量与所述栈顶信号量不同,确定所述栈顶信号量死锁。
可选的,若所述第一线程释放已获取的第二信号量,所述方法还包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于新华三技术有限公司成都分公司,未经新华三技术有限公司成都分公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910680765.7/2.html,转载请声明来源钻瓜专利网。