关于linux操作系统的交换机在运行过程中可能挂起几秒的时间的调试方法

问题描述:在软件启动过程中,某个线程与其他线程会有数据交互,在代码中会有线程中相互的锁的操作,然后呢此线程在测试过程中发现整个线程会突然挂起几秒什么事情也不干的现象。由于接口是客户提供,调试比较困难,这边提供一些调试后的总结和方法;

1.首先一开始考虑的是否为锁的问题,某一时刻线程在等待锁的获取导致,验证此问题的方法是再开一个线程,然后相隔1s获取一次锁,结果在线程挂起的时候锁的获取是正常的。

2.将挂起的线程主动向后延时,确认是否是和其他线程的交互问题或者什么问题导致的,结果是向后延时后可以不挂起,查看日志发现其日志的不同点是端口linkup的时候会在此时由于线程的一些操作会与其冲突导致。

3.查看是否为串口打印导致的延时,结果将打印通过重定向的方式将信息重定向到文件中,挂起的时间变短,说明挂起时间和串口打印内容太多也有关系(写入文件的操作比较快,打印串口会比较慢)。

重定向链接:https://blog.csdn.net/cao849861802/article/details/84884015

4.处理完上述所有问题后发现还是有两秒左右时间延时,此时的延时时间确认是代码自身的执行时间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值