[英]How can I make my program finish when there is no more std input in C++?
[英]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.