首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

多线程线程的挂死有关问题

2012-04-06 
多线程线程的挂死问题! - C++ Builder / Windows SDK/API我的有一个工程是多线程的,开了3个线程,有两个是

多线程线程的挂死问题! - C++ Builder / Windows SDK/API
我的有一个工程是多线程的,开了3个线程,有两个是接收处理TCP消息的,另外一个是处理UDP消息的接收的,但是最近发现 在运行的过程中(这个程序是一直运行的,有可能一直要运行半个月)有时候其中某个或者某几个线程会挂起,至于挂起的原因由于对这方面不熟悉,还请各位老鸟们指点一下,线程自动挂起会有哪些方面的原因?该从哪方面去查找线程挂起的原因,谢谢!

[解决办法]
线程挂起的原因有可能是以下几种:
1、出现死锁。
2、它所等待的事件一直没有发生。
3、主程序把线程挂起,一直没有给它就绪接着执行的指令。

偶学嵌入式的,仅仅懂这些。不知能不能解决你的问题。
[解决办法]
主要看是不是死锁了?
[解决办法]
我估计不是挂起,是线程终止了!
这多半是线程内对内存操作不当,引发的问题
[解决办法]
遇到这种问题比较难查,我推荐给线程加入看门狗的程序,定时往一个健壮的检查线程中做写操作,而检查线程要是一定时间
没有收到写操作就重新启动线程,这样虽然找不到问题但可以解决问题。
[解决办法]
楼上方法很好,是容错的方法,要避错的话,除了上面几位的,着重检查内存操作,看是否引发了异常。
[解决办法]

探讨
遇到这种问题比较难查,我推荐给线程加入看门狗的程序,定时往一个健壮的检查线程中做写操作,而检查线程要是一定时间
没有收到写操作就重新启动线程,这样虽然找不到问题但可以解决问题。

[解决办法]
网络通讯问题不是简单的问题,你的线程是挂起还是退出,任务管理器里一看就知道了,或是增加一些必要的日志输出,来查找原因;因为网络的复杂性,所以很难说一个正常的线程为什么会出现异常,通常的解决办法就是运行一段可靠的时间重启线程,或是在出现多少次可捕捉异常后重启线程;如果重启线程仍不能解决问题(有些问题由于堆积太多重启也不行),那么就自动重启程序(退出并重启动自已)来解决,总是可以的.
[解决办法]
网络通讯问题不是简单的问题,你的线程是挂起还是退出,任务管理器里一看就知道了,或是增加一些必要的日志输出,来查找原因;因为网络的复杂性,所以很难说一个正常的线程为什么会出现异常,通常的解决办法就是运行一段可靠的时间重启线程,或是在出现多少次可捕捉异常后重启线程;如果重启线程仍不能解决问题(有些问题由于堆积太多重启也不行),那么就自动重启程序(退出并重启动自已)来解决,总是可以的.
[解决办法]
增加日志是个好方法,
个人感觉是收到数据包出错,引发处理错误。
运行半个月出现很可能是这样,加强出错监控。

热点排行