如何知道pthread是否死亡?
有没有办法检查pthreads状态?
答案 0 :(得分:10)
if(pthread_kill(the_thread, 0) == 0)
{
/* still running */
}
请参阅:pthread_kill
注意:使用pthread_kill()测试a是否存在固有的风险 线程仍在运行。请参阅此帖子以获得解释: How do I determine if a pthread is alive?
答案 1 :(得分:4)
如果您不需要编写可移植应用程序并且可以使用GNU扩展,则可以使用pthread_tryjoin_np
。我相信除了在两个线程之间建立通信之外没有其他方法可以做到这一点(例如,使用一个线程保持的全局互斥锁,只要它处于活动状态)。
答案 2 :(得分:3)
我想在讨论中添加一个事实,即一个线程可以在另一个案例中死亡,这个案例在信号如SIGPIPE的情况下没有提到,当它不由托管进程或它自己的线程处理时在出现这种信号的情况下