当父线程终止时,子线程是否退出

exc*_*ray 22 c++ windows

我正在使用调用beginthreadex,endthreadex在Visual Studio C++中进行一些多线程编程.

我创建了一个子线程thread1.子线程运行在一个永不退出的函数上,因为它具有无限循环.现在,如果父线程因错误终止或成功完成,子线程是否也会退出?我的疑问是 - 即使在主程序退出后,是否存在子线程仍处于活动状态的情况?

对于linux,这种情况应该怎样?

And*_*son 39

线程之间没有父/子关系.如果线程A创建线程B然后线程A终止,则线程B将继续执行.

例外情况是主线程(即运行该main()函数的线程)终止.发生这种情况时,进程终止,所有其他线程停止.

  • 两个例外.如果*any*thread调用`exit`,则*all*threads终止. (10认同)
  • 我还想补充一点,如果`main`存在而不在运行的线程上调用`detach`,则会抛出异常. (3认同)

Joe*_*oey 9

由于C和C++ 要求从main函数返回杀死所有正在运行的线程,是的,该过程应该消失.由于该行为是由运行时完成的,因此Linux上的情况应该是相同的.