繁体   English   中英

如何在程序退出之前确保所有c ++ boost线程完成?

[英]How can I make sure all of my c++ boost threads finish before the program exits?

我知道我可以调用thread.join()来强制线程在当前线程可以继续之前完成。 但是,我的程序有一堆文件被读入内存,修改,然后刷新到磁盘。 每个刷新都在一个单独的线程中完成,以便当内容刷新到磁盘时,当前线程可以继续。

我可以保留一组所有生成的线程,然后在主线程执行结束时将它们全部加入,但如果程序运行很长时间,可能会有大量的flush-threads,其中大部分都已完成。

在继续和退出主线程之前,有没有办法加入所有活动线程?

如果线程已完成执行,则它们实际上不再是线程。 我没有看到你的担忧。 我会考虑使用线程池。 如果要保留所有生成的线程的列表,请使用boost::thread_group 并且加入所有线程基本上和有效地加入所有活动线程是相同的,因为在非线程上的连接立即返回。 HTH

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM