我从 main() 创建了 100 多个线程,所以我只想知道在退出 main() 之前是否需要调用 pthread_join()
。
另外,我不需要这些线程生成的数据,基本上,所有线程都在独立于 main() 和其他线程做一些工作。
最佳答案
pthread_join
做了两件事:
- 等待线程完成。
- 清理与线程关联的所有资源。
如果您在没有加入的情况下退出进程,那么 (2) 将由操作系统为您完成(尽管它不会执行线程取消清理,只是将线程从轨道中删除),并且 (1) 不会。因此是否需要调用 pthread_join
取决于您是否需要 (1) 发生。
如果您不需要线程运行,那么就像其他人所说的那样,您最好将其分离。无法加入分离的线程(因此您不能等待它完成),但如果它完成,它的资源会自动释放。
关于c - 是否有必要调用 pthread_join(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10600250/