在离开启动它的线程之前,您是否必须等待子线程完成?

时间:2013-11-24 01:57:48

标签: c multithreading pthreads

因此,假设您在main(线程1)中创建一个线程。该线程从文件中获取一些输入并创建多个其他线程(线程2 ...等)来处理某些东西。在退出线程1之前,您是否必须退出其他线程(线程2 ...)?如果是这样,我将如何等待线程1生成的所有线程完成?

2 个答案:

答案 0 :(得分:1)

线程之间没有父/子关系。线程都是同行。哪个线程启动另一个线程没有区别,所有线程都是包含它们的进程的相等部分。

有关从pthread_exit调用main的特殊规则仅适用,因为从main返回会终止进程。其他线程没有这样的问题 - 它们只能通过调用exit或类似函数来终止进程。

请注意,您应该 加入或分离每个帖子。您可以分离所有线程,然后您就不必担心加入它们 - 它们只是运行完成然后自我清理。

答案 1 :(得分:0)

不,在大多数情况下,您不必等待其他线程退出。线程的重点是启动一个类的子进程,这个进程在很大程度上独立于启动它的线程。

但是,如果您不关心线程将如何/何时退出,则通常应该分离线程。否则,它会假设你关心它的退出状态,它会占用资源 - 即使它退出 - 直到其他一些线程加入它来检索退出状态。