我知道我可以调用thread.join()来强制线程在当前线程继续之前完成。但是,我的程序有一堆文件被读入内存,修改,然后刷新到磁盘。每个刷新都在一个单独的线程中完成,这样当前线程可以在内容刷新到磁盘时继续。
我可以保留一组所有生成的线程,然后在主线程执行结束时将它们全部连接起来,但如果程序运行很长时间,可能会有大量的flush-threads,其中大部分都已完成反正。
在继续退出主线程之前,有没有办法加入所有活动线程?
答案 0 :(得分:4)
如果线程已完成执行,则它们实际上不再是线程。我没有看到你的担忧。我会考虑使用线程池。如果要保留所有生成线程的列表,请使用boost::thread_group
。加入所有线程与加入所有活动线程基本上有效相同,因为非线程上的连接会立即返回。 HTH