终止线程
一个线程可以在四个线程中终止
-
线程函数返回(强烈建议这样做。)
-
方法。)
-
同一进程或另一进程中的线程调用TerminateThread
功能(避免使用此方法。)
-
包含线程的进程终止(避免使用此方法。)
线程函数返回
你应该经常设计你的线
希望线程终止。这是
唯一能保证
适当地。
让线程函数返回
确保以下各项:
-
在线程函数中创建的所有C++对象都将被销毁
通过他们的毁灭者。
-
堆叠。
-
系统将设置线程的退出代码(在线程的
函数的返回值。
-
系统将减少线程内核对象的使用计数。
ExitThread函数
您可以通过调用ExitThread来强制线程终止:
VOID ExitThread(DWORD dwExitCode);
此函数用于终止线程
清理所有操作系统
由
线程。但是,你的C/C++资源
被摧毁。因为这个原因,它是
最好是从你家回来
退出线程。
当然,您可以使用ExitThread的
dwExitCode参数告诉
代码到。ExitThread函数没有
不返回值,因为线程
已终止,无法执行任何
更多代码。
线程终止是通过
如前一节所述)。
如本节所述,请注意
ExitThread函数是
如果你正在编写C/C++代码,你
不应该调用ExitThread。相反,
你应该使用C++运行时
库函数\u endthreadex。如果你
不要使用微软的C++编译器,
这个选择是,你必须使用它。
TerminateThread函数
打电话给
TerminateThread还会终止线程:
hThread、DWORD和dwExitCode);
与ExitThread不同,ExitThread总是杀死
调用线程TerminateThread
可以杀死任何线程。线程
要终止的线程。当
成为作为
dwExitCode参数。此外,还有
线程的内核对象有其用法
注意TerminateThread函数是
希望线程运行的系统
终止,但线程未终止
函数返回。如果你需要的话
一定要知道这根线
你可能想打电话给我
WaitForSingleObject或类似函数,
通过线的把手。
设计良好的应用程序从不使用
因为线程
没有收到通知
它快死了。线程不能
防止自己被杀。
注意当一根线死的时候
或者调用ExitThread,即
线程被破坏。但是,如果
不会破坏线程的堆栈
直到拥有
线程终止。微软故意
是的。如果其他线程仍在执行
是指
其他线程将提升访问权限
违规行为。离开被杀的人
线程可以继续执行
好的。
此外,动态链接库
(DLL)通常接收通知
线程被强制终止
未收到此通知
会妨碍正确的清理。
当
所拥有的所有用户对象句柄
对象由进程拥有
物体。但是,一个线程拥有两个线程
用户对象:窗口和挂钩。什么时候?
一根线死了,系统
自动销毁所有窗口和
只有当
拥有进程终止。
线程的退出代码从
对传递给的代码仍处于活动状态
退出线程或终止线程。
线程内核对象的状态
发出信号。
如果线程是最后一个活动的
进程中的线程,系统
好。
减1。
当线程终止时,它的
关联线程内核对象
不会自动释放
这里面没有什么别的线索
系统可以用线程的
把手。但是,其他线程
可以调用GetExitCodeThread进行检查
hThread已终止,如果已终止,
确定其退出代码:
BOOL GetExitCodeThread(句柄
hThread、PDWORD和pdwExitCode);
退出代码值在
pdwExitCode指向的DWORD。如果
线程尚未终止
函数用
静止标识符(定义为
0x103)。如果功能成功,
返回TRUE。