使用强制性的手段来结束一个进程
VOID ExitThread(
DWORD dwExitCode);
dwExitCode 指定此线程之结束代码
没有返回值
这函数有点像C runtime library中的exit()函数,因为他可以在任何时候调用并且绝不会返回。任何代码若放在此行之下,保证不会被执行。
#define WIN32_LEAN_AND_MEAN #include <stdlib.h> #include <stdio.h> #include <Windows.h> DWORD WINAPI ThreadFunc(LPVOID); void AnotherFunc(void); int main() { HANDLE hThrd; DWORD exitCode = 0; DWORD threadId; hThrd = CreateThread(NULL, 0, ThreadFunc, (LPVOID)1, 0, &threadId); if (hThrd) { printf(" Thread launched\n"); } for(;;) { BOOL rc; rc = GetExitCodeThread(hThrd,&exitCode); if (rc && exitCode != STILL_ACTIVE) break; } CloseHandle(hThrd); printf("Thread returned %d\n",exitCode); return EXIT_SUCCESS; } DWORD WINAPI ThreadFunc(LPVOID n) { printf("Thread running\n"); AnotherFunc(); return 0; } void AnotherFunc() { printf("About to exit thread\n"); ExitThread(4); printf("This will never printf\n"); }
线程启动后就执行的那个线程称为主线程(primary thread)。主线程两个特点。第一,他负责GUI(Graphic User Interface)程序中的注销信息循环。第二,这一线程的结束(不论是因为返回或因为调用了exitThread())会使得程序中的所有线程都被强迫结束,程序也因此而结束。其他线程没有机会做清理工作。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。