如果父/主线程死亡,std :: async调用会发生什么

时间:2013-01-07 20:13:00

标签: c++ c++11 std stdthread stdasync

如果我是对的,std :: async使用一个新线程并调用其中的方法。我想知道如果主线程或父线程死亡会发生什么。控制异步方法的线程是否也会死亡。

1 个答案:

答案 0 :(得分:7)

C ++中没有“父”线程的概念,每个线程都独立于它创建的线程。但是,main线程是特殊的,如果它从main()返回或调用exit(),则即使其他线程仍在运行,整个应用程序也会终止。一旦发生这种情况,如果仍在运行的线程访问主线程堆栈中的任何全局变量或自动对象,或者使用任何标准库对象或调用信号处理程序中不允许的任何函数,则程序具有未定义的行为。

简而言之,如果您期望得到明智的结果,请不要在main完成后让其他线程运行。

相关问题