c++子线程在main()父线程退出时终止?

标签 c++ multithreading exit

VS2013,C++ 我只是发布 dll 应用程序。 dll 应用程序函数之一由 _beginthread 运行线程。 在正常的软件流程中,我使用互斥锁和控制线程。在从主应用程序注销 dll 之前,我等待线程终止并关闭处理程序。

然而,有一种情况是主应用程序可以在没有以正确方式释放资源的情况下关闭,我的意思是没有等待子线程终止并且没有关闭处理程序。

应用主力退出有没有风险?退出后再次运行应用程序和线程是否有风险? 操作系统有任何风险吗?是否所有线程都在主退出后终止?

我知道这是“肮脏”的解决方案,但出于某种原因我无法改变它。

提前感谢您的建议。

最佳答案

根据 Raymond Chen - 在 Windows 系统中 - 如果主线程终止,您的应用程序将挂起,而您的所有线程都将结束。这意味着,没有你的解决方案将不起作用,你的线程将卡住你的应用程序在关闭状态。此外,即使您的线程在退出时被强制终止,它也不会未初始化,并且 - 因为我们在这里讨论的是 MFC 线程 - 它会导致您的应用程序泄漏资源,所以拜托不要不要那样做!

关于c++子线程在main()父线程退出时终止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30370702/

相关文章:

c++ - 基于空终止字符串的for循环范围

c++ - 在 C++ 中读取 INI 文件

c# - c# 退出应用程序时如何清除txt文件

iphone - 要求用户通过 iphone 中的 exit(0) 重新启动应用程序?

android - 使用退出按钮关闭应用程序

c++ - 使用 union 标记在结构内引用 union 会给出错误的地址

c++ - boost microsec_time_clock.hpp 警告 C4244

c - 为什么我的应用程序在复制大文件时卡住?

python - 在执行其他任务时预加载 HDF5 文件的一部分

c# - 确保所有线程都关闭或强行关闭一个线程?