当调用TerminateThread
时,即使线程处于挂起状态,线程也会终止吗?
答案 0 :(得分:3)
TerminateThread function会破坏线程,无论其状态或可能的副作用如何。链接的MSDN页面详细介绍了这一点。
TerminateThread 用于导致线程退出。发生这种情况时,目标线程无法执行任何用户模式代码。附加到线程的DLL不会通知线程正在终止。系统释放线程的初始堆栈。
Windows Server 2003和Windows XP:目标线程的初始堆栈未被释放,导致资源泄漏。
TerminateThread 是一种危险的功能,只能在最极端的情况下使用。只有当您确切知道目标线程正在执行的操作时,才应调用 TerminateThread ,并且您可以控制目标线程在终止时可能正在运行的所有代码。例如, TerminateThread 可能会导致以下问题:
我必须问你为什么要调用它,因为它绝对是关闭线程的最后手段。除非你非常幸运或小心,否则你的应用程序会泄漏内存和其他资源。