c - 是否有必要调用 pthread_join()

标签 c multithreading pthreads

我从 main() 创建了 100 多个线程,所以我只想知道在退出 main() 之前是否需要调用 pthread_join()。 另外,我不需要这些线程生成的数据,基本上,所有线程都在独立于 main() 和其他线程做一些工作。

最佳答案

pthread_join 做了两件事:

  1. 等待线程完成。
  2. 清理与线程关联的所有资源。

如果您在没有加入的情况下退出进程,那么 (2) 将由操作系统为您完成(尽管它不会执行线程取消清理,只是将线程从轨道中删除),并且 (1) 不会。因此是否需要调用 pthread_join 取决于您是否需要 (1) 发生。

如果您不需要线程运行,那么就像其他人所说的那样,您最好将其分离。无法加入分离的线程(因此您不能等待它完成),但如果它完成,它的资源会自动释放。

关于c - 是否有必要调用 pthread_join(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10600250/

相关文章:

c - 分配给函数的参数太多?

c - Malloc使用的内存是所需内存的10倍

multithreading - 为什么在线程方面需要 "move"关键字;为什么我永远不想要这种行为?

C - pthread 返回意外结果

CImg:如何测试文件是图像

java - android中线程 sleep 不一致

创建具有不同调度优先级的线程

c++ - 在 PThreads 或 Windows 中线程退出时调用函数

条件变量和 mutex_unlock

c -/net/ipmr.c中的MFC_HASH