【问题标题】:How can I make sure all of my c++ boost threads finish before the program exits?如何确保我的所有 c++ boost 线程在程序退出之前完成?
【发布时间】:2010-10-16 21:32:15
【问题描述】:

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

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

有什么方法可以在继续和退出主线程之前加入所有活动线程?

【问题讨论】:

  • 你想什么作为替代方案;提前完成工作的线程会被简单地终止吗?

标签: c++ multithreading boost


【解决方案1】:

如果线程已完成执行,它们实际上不再是线程。我看不出你的担心。我会考虑使用线程池。如果您想保留所有衍生线程的列表,请使用boost::thread_group。加入 all 线程本质上和加入所有 active 线程是一样的,因为在 Not-A-Thread 上加入会立即返回。高温

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多