c - 在离开启动子线程之前是否必须等待子线程完成?

标签 c multithreading pthreads

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

最佳答案

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

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

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

关于c - 在离开启动子线程之前是否必须等待子线程完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20170211/

相关文章:

c# - 有没有办法在启动后将数据发送到 BackgroundWorker?

c - 在线程和套接字编程中使用 printf

c - 使用 C 传递数据变量以在行命令 OpenSSL 中加密/解密

c - 单个生产者和多个消费者

c - 双链表 - 内存损坏

c++ - g++ 为什么你不必链接 iostream 二进制文件,但对于 pthread 却必须链接?

c - 在 C 中实现定时事件

c - 更有效的并发解决方案

c - 无法显示消息

c - 程序没有输出完整的字符串