代码之家  ›  专栏  ›  技术社区  ›  jonderry

在程序退出之前,我如何确保所有的C++ Boost线程都完成?

  •  1
  • jonderry  · 技术社区  · 14 年前

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

    我可以保留一组所有生成的线程,然后在主线程执行结束时将它们连接起来,但是如果程序运行很长时间,可能会有大量的刷新线程,其中大部分都会完成。

    有什么办法可以加入所有人吗 积极的 在继续和退出主线程之前线程?

    1 回复  |  直到 14 年前
        1
  •  4
  •   Armen Tsirunyan    14 年前

    如果线程已经完成了执行,那么它们实际上不再是线程了。我看不出你有什么顾虑。我个人会考虑使用线程池。如果要保留所有生成线程的列表,请使用 boost::thread_group . 并加入 全部的 螺纹基本上和有效地与连接所有 积极的 非线程上的join之后的线程将立即返回。高温高压