如果主线程完成,C ++程序将在什么条件下继续?

时间:2009-09-23 16:07:17

标签: linux multithreading debugging g++ pthreads

我正在调试一个问题,其中有一个线程在主线程退出后继续运行。它停留在循环中,等待另一个线程更改变量。

我试图理解在主线程退出后进程将在什么情况下继续运行。我在用 32位linux 克++ 并行线程

3 个答案:

答案 0 :(得分:2)

如果使用pthread_exit()退出main()函数,则当其他线程完成时,该进程将退出。它没有任何异常。

答案 1 :(得分:0)

这是一种非常奇怪的行为,因为只有进程才能成为僵尸。 线程放在主程序线程范围的内存中。 简化甚至分离的线程在主线程完成时被系统杀死。 你能发一个代码吗?

答案 2 :(得分:0)

这不是C ++问题。它关于pthreads和linux进程管理

  

通常,会发生过程破坏   当进程调用exit()时   系统调用,要么是明确的   准备终止或隐含   从任何主子程序返回   程序(即C编译器   在main()之后调用exit()   返回)。

http://www.informit.com/articles/article.aspx?p=370047&seqNum=4

读完之后,我会说你看到的行为是不正常的。我在Windows上看过类似的东西。我不相信它的规格。它是操作系统,运行时库或其他任何内容的错误。