1 进程终止的方法:
<1>主线程的进入点函数返回(最好使用这个方法)
<2>进程中的一个线程调用ExitProcesss函数(应该避免使用这种方法)。
<3>另一个进程中的线程调用TerminateProcess函数(应该避免使用这种方法)。
<4>进程中的所有线程自行终止运行(这种情况几乎从未发生)。
1.1 主线程进入点函数返回
始终都应该这样来设计应用程序,即只有当主线程的进入点函数返回时,它的进程才终止运行。这是保证所有线程资源能够得到正确清除的唯一办法。
<1> C++对象将能够使用它们的析构函数得以释放
<2> 操作系统能够正确的释放该线程使用的堆栈内存
<3> 系统将进程的退出代码设置为进入点函数的返回值
<4> 系统将内核对象的计数值减去1
1.2 调用ExitProcess函数
voidExitProcess(uExitCode)
跟主线程的进入点函数返回相比,它就不那么安全,不能保证资源被清理。
通过调用ExitProcess函数,C++/C运行期启动代码能够确保主线程从它的进入点函数返回时,进程便终止运行,而不管进程中是否还有其他线程在运行。
如果在进入点函数中调用ExitThread,那么主线程就会停止运行,但是如果进程中如果还有其他线程的话,进程便不会终止。
ExitProcess以及ExitTh