主线程的退出问题

摘录自:http://bbs.csdn.net/topics/370193909

windows核心编程中有讲的,第69页:

“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或者仅仅是返回,那么应用程序的主线程将停止运行,但是,如果进程中至少有一个线程还在运行,该进程将不会终止运行。”

我同意12楼的说法。可以写一个测试代码
C/C++ code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <process.h>    /* _beginthread, _endthread */
#include <windows.h>
unsigned  __stdcall _threadfun( void * pParam)
{
     while (TRUE)
     {
         Sleep(10);
     }
}
 
 
void  main()
{
   unsigned uThreaID;
    _beginthreadex(NULL,0,_threadfun,NULL,NULL,&uThreaID);
    //不调用ExitThread,主线程执行完成退出,crt会终止所有的线程,进程就得以退出
    //如果调用了ExitThread退出主线程,crt不会终止其他的线程,虽然主线程退出了,进程仍然在
    //ExitThread(1);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值