主线程退出,是否子线程也退出了?请高手回答

football 2005-09-09 09:11:02
主线程退出,是否子线程也退出了?
或主线程退出,是否进程就退出了。
哪里有这方面的资料,请高手推荐。


...全文
2303 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaoriyue 2005-09-13
  • 打赏
  • 举报
回复
windows核心编程:
当主线程的进入点函数( Wi n M a i n、w Wi n M a i n、m a i n或w m a i n)返回时,它将返回给C / C + +运行期启动代码,它能正确地清除该进程使用的所有的C运行期资源。当C运行期资源被
释放之后,C运行期启动代码就显式调用E x i t P r o c e s s,并将进入点函数返回的值传递给它。这解释了为什么只需要主线程的进入点函数返回,就能够终止整个进程的运行。请注意,进程中运行的任何其他线程都随着进程而一道终止运行。
Windows Platform SDK文档声明,进程要等到所有线程终止运行之后才终止运行。就操作
系统而言,这种说法是对的。但是, C / C + +运行期对应用程序采用了不同的规则,通过调用
E x i t P r o c e s s,使得C / C + +运行期启动代码能够确保主线程从它的进入点函数返回时,进程便终止运行,而不管进程中是否还有其他线程在运行。不过,如果在进入点函数中调用E x i t T h r e a d,而不是调用E x t i P r o c e s s或者仅仅是返回,那么应用程序的主线程将停止运行,但是,如果进程中至少有一个线程还在运行,该进程将不会终止运行。
football 2005-09-09
  • 打赏
  • 举报
回复
楼上说的有道理,因为写程序的时候碰到过主界面被关掉了,即主线程退出了。
但是在任务管理器中,进程还存在。

另外,正常的情况,主线程退出的时候,子线程也会退出,这个时候,主线程有向子线程发送什么消息吗?
Jagen在路上 2005-09-09
  • 打赏
  • 举报
回复
并不是楼上的那些所说的那样
虽然通常情况下,主线程退出了,也就表明进程退出了,其他的子进程也会随之退出且被回收资源。
但是有一个特殊的情况,如果子进程内发生死锁,那么这个子进程就无法退出,也会导致整个进程都无法退出。
快乐鹦鹉 2005-09-09
  • 打赏
  • 举报
回复
主线程退出,进程就退出,当然相应的子线程都会退出的。
beyondtkl 2005-09-09
  • 打赏
  • 举报
回复
这当然了 主线程退出 整个进程结束 系统会回收所有进程的资源。。当然也包括结束其子线程。
aiguozhou 2005-09-09
  • 打赏
  • 举报
回复
学习
晨星 2005-09-09
  • 打赏
  • 举报
回复
《Windows核心编程》
Beover1984 2005-09-09
  • 打赏
  • 举报
回复
每个进程都有一个主线程,所以主线程退出也就是进程结束

看看<WINDOWS核心编号>www.infoxa.com有下
Jagen在路上 2005-09-09
  • 打赏
  • 举报
回复
Windows本身在系统级上根本就没有进程的概念,察看这部分源代码会发现,CreateProcess实际上调用的就是CreateThread。这说明主线程即可以概念上的进程了。至于地址空间,仅仅是一个数据结构所决定的,还是与我们所了解的进程概念无关。详细资料可参看《VC++编程深入引导》。
football 2005-09-09
  • 打赏
  • 举报
回复
主线程退出,进程就死亡.
这个方面的文章哪里可以看到。

Windows核心编程 上面写的是
终止进程的运行
若要终止进程的运行,可以使用下面四种方法:
• 主线程的进入点函数返回(最好使用这个方法)。
• 进程中的一个线程调用E x i t P r o c e s s函数(应该避免使用这种方法)。
• 另一个进程中的线程调用Te r m i n a t e P r o c e s s函数(应该避免使用这种方法)。
• 进程中的所有线程自行终止运行(这种情况几乎从未发生)。
这一节将介绍所有这四种方法,并且说明进程结束时将会发生什么情况。

如果主线程界面没有了,但是进程还在后台运行在那里,是否说明主线程还没有结束.
zhaoriyue 2005-09-09
  • 打赏
  • 举报
回复
主线程退出, 表明进程已经死亡. 操作系统会回收所有的进程资源,包括线程所使用的堆栈, 所以所有的线程必然都会死亡. 有个问题要注意, 在任务管理器中看到的不是线程,是进程(不知道有没有windows作业,微软并不把它叫做"进程管理器"???).
oyljerry 2005-09-09
  • 打赏
  • 举报
回复
WM_CLOSE等消息
oyljerry 2005-09-09
  • 打赏
  • 举报
回复
一般情况下,主线程退出,正常的,就应该所有线程都退出了,进程退出

64,676

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧