我是否需要检查我的线程是否已退出?

时间:2016-06-30 13:05:53

标签: multithreading pthreads posix sigaction

我有一个嵌入式应用程序,在Linux上作为单个进程运行。

我使用sigaction()来捕获问题,例如分段错误等。

该进程有一些线程,所有这些线程都应该像app一样永远运行。

我的问题是,我是否应该检测其中一个线程是否死亡。

线程中的seg错误会被应用程序的sigaction()处理程序捕获吗?

我在考虑使用pthread_cleanup_push/pop,但是this page说“如果进程中的任何线程调用exit,_Exit或_exit,那么整个进程就会终止”,所以我想知道一个线程是否正在死亡会被处理过程......

1 个答案:

答案 0 :(得分:1)

您需要检查子线程是否已完成。 如果在子线程完成其处理后需要执行某些操作,则可以从主线程调用thread_join(),以便它将等待子线程完成执行,之后您可以执行其余操作。如果您在主线程中使用thread_exit,它将在完成后终止,从而使生成的线程继续执行。只有在所有线程完成执行后,该进程才会被终止。

如果要检查生成的线程的状态,可以使用标志来检测它是否正在运行。查看此链接了解更多详情

How do you query a pthread to see if it is still running?