【问题标题】:Threads state after the program finishes execution程序执行完毕后的线程状态
【发布时间】:2013-04-27 19:34:54
【问题描述】:

主线程执行完成后,内部线程会发生什么?

例如:

程序 1 创建 5 个线程在后台运行。
程序 1 崩溃。
那些线程还活着吗?

他们会因为线程绑定在进程上下文中而被杀死?

【问题讨论】:

    标签: windows multithreading


    【解决方案1】:

    所有这些资源都链接到流程数据结构。当进程终止时,Windows 会确保所有资源都被清理干净。

    没有找到对文档的引用 [随意添加一些,我确信我在 M.Russinovich “Windows Internals” 书中读到了这个],但这里有几个关于内存释放的类似答案。线程清理是进程终止时 Windows 调用的清理例程的一部分。

    https://stackoverflow.com/a/2975844/706456

    https://stackoverflow.com/a/654766/706456

    【讨论】:

      【解决方案2】:

      如果线程 A 创建了线程 B 并且线程 A 终止了,那么线程 B 将不会被杀死,因为线程之间没有父/子关系。

      其他线程终止的唯一情况是主进程终止时(因此,如果程序崩溃,它们确实会被杀死)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-23
        • 2018-11-27
        相关资源
        最近更新 更多