当前位置: 技术问答>linux和unix
UX下如何判断线程是否还在运行?UX下如何在for循环进入死循环时,强行停止它(不再for中处理)?
来源: 互联网 发布时间:2015-11-27
本文导语: 1、我创建了一个线程,过一段时间后希望判断它是否存在,若存在就cancel它。但是,如何判断线程时否存在? 2、我要进行一个计算,可能for循环进入死循环。我希望过一个时间片后如果进入死循环,就强行停止,如...
1、我创建了一个线程,过一段时间后希望判断它是否存在,若存在就cancel它。但是,如何判断线程时否存在?
2、我要进行一个计算,可能for循环进入死循环。我希望过一个时间片后如果进入死循环,就强行停止,如何作?
谢谢!
2、我要进行一个计算,可能for循环进入死循环。我希望过一个时间片后如果进入死循环,就强行停止,如何作?
谢谢!
|
1.创建线程后记住thread id,判断一条线程是否存在可以用pthread_kill发信号0给这个线程,若成功则表示存在。其实你说的情况可以直接调用pthread_cancel()就可以了,如果线程不存在时会返回一个ESRCH错误。
2.怎么才能知道你的线程进了死循环了?为什么你的程序中要存在死循环?我觉得是否要重新考虑你的程序结构?要停止一条线程还是建议用pthread_cancel(),这就要求在你的循环中一定要有至少一个cancel point,很多系统调用都是cancel point,你自己找一下相关资料。如果没有的话,要加入一个pthread_testcancel(),作为cancel point.
2.怎么才能知道你的线程进了死循环了?为什么你的程序中要存在死循环?我觉得是否要重新考虑你的程序结构?要停止一条线程还是建议用pthread_cancel(),这就要求在你的循环中一定要有至少一个cancel point,很多系统调用都是cancel point,你自己找一下相关资料。如果没有的话,要加入一个pthread_testcancel(),作为cancel point.
|
用alarm()
|
你说的方法其实是多线程编程中的标准做法.其他办法也有,但没有pthread_cancel()简练.