终止线程

【勇芳软件工作室】汉化HomePreviousNext

线程执行,直到出现以下事件之一:

*线程调用ExitThread 功能。

*进程的任何线程调用ExitProcess函数。

*线程函数返回。

*任何线程使用线程的句柄调用TerminateThread函数。

*任何线程使用该进程的句柄调用TerminateProcess函数。

GetExitCodeThread函数返回线程的终止状态。线程正在执行时,其终止状态为STILL_ACTIVE。当线程终止时,其终止状态从STILL_ACTIVE更改为线程的退出代码。退出代码是调用ExitThreadExitProcessTerminateThreadTerminateProcess中指定的值,或线程函数返回的值。

当一个线程终止时,线程对象的状态发生变化,释放任何其他线程等待线程终止。有关同步的更多信息,请参阅同步执行多个线程.

如果一个线程被ExitThread终止,则系统调用每个附加的DLL的入口点函数,其值指示线程与DLL分离(除非您调用DisableThreadLibraryCalls函数)。如果线程被ExitProcess终止,则会调用一次DLL入口点函数,以指示进程正在分离。线程由TerminateThreadTerminateProcess终止时,不会通知DLL。有关DLL的更多信息,请参阅动态链接库.

警告 TerminateThreadTerminateProcess函数只能在极端情况下使用,因为它们不允许线程清理,不通知附加的DLL,也不要释放初始堆栈。以下步骤提供了更好的解决方案:

*使用CreateEvent功能创建事件对象。

*创建线程。

*每个线程通过调用WaitForSingleObject函数监视事件状态。使用等待超时间隔为零。

*当事件设置为信号状态时,每个线程终止自己的执行(WaitForSingleObject返回WAIT_OBJECT_0)。