若要终止线程的运行,可以使用下面的方法:
* 线程函数返回(最好使用这种方法)。
* 通过调用ExitThread函数,线程将自行撤消(最好不要使用这种方法)。
* 同一个进程或另一个进程中的线程调用TerminateThrea函数(应该避免使用这种方法)。
* 包含线程的进程终止运行(应该避免使用这种方法)。
线程函数返回
这是确保所有线程资源被正确地清除的唯一办法。
如果线程能够返回,就可以确保下列事项的实现:
* 在线程函数中创建的所有C++对象均将通过它们的撤消函数正确地撤消。
* 操作系统将正确地释放线程堆栈使用的内存。
* 系统将线程的退出代码(在线程的内核对象中维护)设置为线程函数的返回值。
* 系统将递减线程内核对象的使用计数。
参考(互斥对象内核对象)
ExitThread函数
可以让线程调用ExitThread函数,以便强制线程终止运行。
该函数将终止线程的运行,并导致操作系统清除该线程使用的所有操作系统资源。
但是,C++资源(如C++类对象,导致析构函数也没有被调用)将不被撤消。
TerminateThread函数
调用TerminateThread函数也能够终止线程的运行: