linux 长时间while运行,被中止或暂停
RT,怎样恢复被系统中止或暂停的线程呢?我使用pthread_kill(pid,0)去查询线程的状态,线程还存在,就是不行运了。...
RT,怎样恢复被系统中止或暂停的线程呢?我使用pthread_kill(pid,0)去查询线程的状态,线程还存在,就是不行运了。
展开
1个回答
展开全部
linux系统不可能自行中止或者暂停你的线程,我写过很多服务器程序,都是几个月连续运行的,从来没遇到过这种情况,问题肯定出在你线程内部
是否有可能线程挂起?被信号中断?死锁?信号量卡死?
在线程出问题的时候,用gcore把堆栈信息采集下来,然后用gdb跟踪到具体卡住的线程,看下到底卡在哪里。
是否有可能线程挂起?被信号中断?死锁?信号量卡死?
在线程出问题的时候,用gcore把堆栈信息采集下来,然后用gdb跟踪到具体卡住的线程,看下到底卡在哪里。
追问
怎么查看线程被挂起或中断呢?我没用锁或信号量,只是用bool型去判断。我运行在ARM环境的,只能打印调试啊,每次线程中止的地方都不一样的
追答
ARM下可以用gdb-server配合,PC上用gdb来进行远程调试
ps -efLl 能否看到线程具体停在什么系统调用上吗?
你的线程里面的循环,是否有系统调用,导致这个系统调用被某个信号中断后阻塞?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询