关于多线程数据交互是否会因为线程休眠而卡死的问题

创作灵感:起因是工作中处理硬件传来的数据时,接收监听出现异常现象。

现象描述:两个独立的端口传输数据是有一定关联性的,在这里可以设为A端口和B端口,当A端口接收到的数据符合判断条件是,会对硬件下发某一指令,此时会接收到B端口传来的数据。理想情况下A,B端口都会有数据(数据量在每秒300-1G左右),但实际情况是当下发了数据采集命令时,A端口就没有数据到A线程了,只有当B线程运行完一次以后,才会有少量数据进入A线程,以此达到自动检测收集的效果,但不保证当B端口无数据传入后,A端口任旧有数据传入。

问题原因分析:(1)数据量过大,导致内存不够;(2)线程休眠,A端口的数据无法压入到A线程中;(3)硬件原因

排查:(1)打开任务管理器,对内存进行监控,内存占用率不超过60%,基本排除(1);(2)写了一个demo,测试线程休眠时压入数据是否会有影响,程序依旧稳定运行,数据持续压入(1,2分别是压入数据来源,然后是输出数据处理线程被压入数据的次数,之后每8s打印一次);(3)通过shark对网络端口进行抓包,若有数据源源不断从A端口传入,则证明是程序问题,若无数据传入,则证明是硬件逻辑的问题

  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

傻瓜小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值