因此,假设您在main(线程1)中创建一个线程。该线程从文件中获取一些输入并创建多个其他线程(线程2 ...等)来处理某些东西。在退出线程1之前,您是否必须退出其他线程(线程2 ...)?如果是这样,我将如何等待线程1生成的所有线程完成?
答案 0 :(得分:1)
线程之间没有父/子关系。线程都是同行。哪个线程启动另一个线程没有区别,所有线程都是包含它们的进程的相等部分。
有关从pthread_exit
调用main
的特殊规则仅适用,因为从main
返回会终止进程。其他线程没有这样的问题 - 它们只能通过调用exit
或类似函数来终止进程。
请注意,您应该 加入或分离每个帖子。您可以分离所有线程,然后您就不必担心加入它们 - 它们只是运行完成然后自我清理。
答案 1 :(得分:0)
不,在大多数情况下,您不必等待其他线程退出。线程的重点是启动一个类的子进程,这个进程在很大程度上独立于启动它的线程。
但是,如果您不关心线程将如何/何时退出,则通常应该分离线程。否则,它会假设你关心它的退出状态,它会占用资源 - 即使它退出 - 直到其他一些线程加入它来检索退出状态。