如何强制杀死一个线程

时间:2021-10-12 07:10:10

为了强制终止一个线程,您可以使用TerminateThread()函数,原型如下: 

BOOL   TerminateThread( 

    HANDLE   hThread,         //   handle   to   thread 

    DWORD   dwExitCode       //   exit   code 

); 

 

第一个参数是调用CreateThread的返回值,第二个参数是指定线程的退出码,该值可以用GetExitCodeThread函数来查看。 

 

该函数导致指定线程终止,一旦调用目标线程不能再执行任何user-mode的代码,线程的初始栈也得不到释放,依附于该线程的DLL也得不到该线程已经终止的通知。 

 

因为此函数的强制性,所以会导致一些情况发生: 

如果目标线程占有crital   section,将不被释放; 

如果线程正从堆中申请内存,堆的锁将不被释放; 

此外,如果正在执行kernel32的调用或者使用shared DLL,也会产生影响。 

 

所以,如果您强制退出,除了考虑主动地释放资源之外,编码时还要还要考虑会出现上述的一些问题。 

 

摘自:http://www.3qu3.com/bianchengyuyanyuanmafenxi/2010-11-29/10550.html