多线程线程的挂死有关问题
多线程线程的挂死问题! - C++ Builder / Windows SDK/API我的有一个工程是多线程的,开了3个线程,有两个是
多线程线程的挂死问题! - C++ Builder / Windows SDK/API 我的有一个工程是多线程的,开了3个线程,有两个是接收处理TCP消息的,另外一个是处理UDP消息的接收的,但是最近发现 在运行的过程中(这个程序是一直运行的,有可能一直要运行半个月)有时候其中某个或者某几个线程会挂起,至于挂起的原因由于对这方面不熟悉,还请各位老鸟们指点一下,线程自动挂起会有哪些方面的原因?该从哪方面去查找线程挂起的原因,谢谢![解决办法] 线程挂起的原因有可能是以下几种: 1、出现死锁。 2、它所等待的事件一直没有发生。 3、主程序把线程挂起,一直没有给它就绪接着执行的指令。 偶学嵌入式的,仅仅懂这些。不知能不能解决你的问题。[解决办法] 主要看是不是死锁了?[解决办法] 我估计不是挂起,是线程终止了! 这多半是线程内对内存操作不当,引发的问题[解决办法] 遇到这种问题比较难查,我推荐给线程加入看门狗的程序,定时往一个健壮的检查线程中做写操作,而检查线程要是一定时间 没有收到写操作就重新启动线程,这样虽然找不到问题但可以解决问题。[解决办法] 楼上方法很好,是容错的方法,要避错的话,除了上面几位的,着重检查内存操作,看是否引发了异常。[解决办法]
探讨 遇到这种问题比较难查,我推荐给线程加入看门狗的程序,定时往一个健壮的检查线程中做写操作,而检查线程要是一定时间 没有收到写操作就重新启动线程,这样虽然找不到问题但可以解决问题。[解决办法] 网络通讯问题不是简单的问题,你的线程是挂起还是退出,任务管理器里一看就知道了,或是增加一些必要的日志输出,来查找原因;因为网络的复杂性,所以很难说一个正常的线程为什么会出现异常,通常的解决办法就是运行一段可靠的时间重启线程,或是在出现多少次可捕捉异常后重启线程;如果重启线程仍不能解决问题(有些问题由于堆积太多重启也不行),那么就自动重启程序(退出并重启动自已)来解决,总是可以的.
[解决办法] 网络通讯问题不是简单的问题,你的线程是挂起还是退出,任务管理器里一看就知道了,或是增加一些必要的日志输出,来查找原因;因为网络的复杂性,所以很难说一个正常的线程为什么会出现异常,通常的解决办法就是运行一段可靠的时间重启线程,或是在出现多少次可捕捉异常后重启线程;如果重启线程仍不能解决问题(有些问题由于堆积太多重启也不行),那么就自动重启程序(退出并重启动自已)来解决,总是可以的.
[解决办法] 增加日志是个好方法,
个人感觉是收到数据包出错,引发处理错误。
运行半个月出现很可能是这样,加强出错监控。