多线程线程的挂死问题!

jimi830429 2009-01-04 09:51:11
我的有一个工程是多线程的,开了3个线程,有两个是接收处理TCP消息的,另外一个是处理UDP消息的接收的,但是最近发现 在运行的过程中(这个程序是一直运行的,有可能一直要运行半个月)有时候其中某个或者某几个线程会挂起,至于挂起的原因由于对这方面不熟悉,还请各位老鸟们指点一下,线程自动挂起会有哪些方面的原因?该从哪方面去查找线程挂起的原因,谢谢!
...全文
597 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
米线老鼠 2010-01-28
  • 打赏
  • 举报
回复
增加日志是个好方法,
个人感觉是收到数据包出错,引发处理错误。
运行半个月出现很可能是这样,加强出错监控。
ocean1004 2009-02-26
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zhengcom 的回复:]
遇到这种问题比较难查,我推荐给线程加入看门狗的程序,定时往一个健壮的检查线程中做写操作,而检查线程要是一定时间
没有收到写操作就重新启动线程,这样虽然找不到问题但可以解决问题。
[/Quote]
麻烦问下看门狗程序是什么
mrzhjy 2009-02-26
  • 打赏
  • 举报
回复
网络通讯问题不是简单的问题,你的线程是挂起还是退出,任务管理器里一看就知道了,或是增加一些必要的日志输出,来查找原因;因为网络的复杂性,所以很难说一个正常的线程为什么会出现异常,通常的解决办法就是运行一段可靠的时间重启线程,或是在出现多少次可捕捉异常后重启线程;如果重启线程仍不能解决问题(有些问题由于堆积太多重启也不行),那么就自动重启程序(退出并重启动自已)来解决,总是可以的.
mrzhjy 2009-02-26
  • 打赏
  • 举报
回复
网络通讯问题不是简单的问题,你的线程是挂起还是退出,任务管理器里一看就知道了,或是增加一些必要的日志输出,来查找原因;因为网络的复杂性,所以很难说一个正常的线程为什么会出现异常,通常的解决办法就是运行一段可靠的时间重启线程,或是在出现多少次可捕捉异常后重启线程;如果重启线程仍不能解决问题(有些问题由于堆积太多重启也不行),那么就自动重启程序(退出并重启动自已)来解决,总是可以的.
我不懂电脑 2009-01-27
  • 打赏
  • 举报
回复
楼上方法很好,是容错的方法,要避错的话,除了上面几位的,着重检查内存操作,看是否引发了异常。
zhengcom 2009-01-22
  • 打赏
  • 举报
回复
遇到这种问题比较难查,我推荐给线程加入看门狗的程序,定时往一个健壮的检查线程中做写操作,而检查线程要是一定时间
没有收到写操作就重新启动线程,这样虽然找不到问题但可以解决问题。
lvgaojian 2009-01-22
  • 打赏
  • 举报
回复
我估计不是挂起,是线程终止了!
这多半是线程内对内存操作不当,引发的问题
jaffy 2009-01-05
  • 打赏
  • 举报
回复
主要看是不是死锁了?
jimi830429 2009-01-05
  • 打赏
  • 举报
回复
谢谢,我对这方面也不是很懂,我再按照你说的几个方面查一下!
wbyjerry 2009-01-04
  • 打赏
  • 举报
回复
线程挂起的原因有可能是以下几种:
1、出现死锁。
2、它所等待的事件一直没有发生。
3、主程序把线程挂起,一直没有给它就绪接着执行的指令。

偶学嵌入式的,仅仅懂这些。不知能不能解决你的问题。

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧