终止线程运行,最好的方法是自然返回return结束。在微软创建多线程API时,C/C++运行时库还不太成熟,导致一些API的调用与CRT会出冲突,使用CreateThread创建线程,并不是很推荐的,需要使用_beginthread。谈到线程终止,就得扯扯如下两个问题了
- ExitThread()
- TerminateThread()
使用以上两个函数结束线程时,正常的return将不会被执行,如果终止的前面有申请的内存没有被析构掉,将会造成内存泄漏,要谨慎使用,最好不用。
下面具体谈谈这两个函数
(1)TerminateThread
作用:在线程外终止一个线程,强制终止。
BOOL
WINAPI
TerminateThread(
_In_ HANDLE hThread, //被终止的线程句柄
_In_ DWORD dwExitCode //退出码
);