- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
调用TerminateThread
时,即使线程处于挂起状态,线程也会终止吗?
最佳答案
TerminateThread function销毁线程而不考虑其状态或可能的副作用。链接的 MSDN 页面对此进行了一些详细介绍。
TerminateThread is used to cause a thread to exit. When this occurs, the target thread has no chance to execute any user-mode code. DLLs attached to the thread are not notified that the thread is terminating. The system frees the thread's initial stack.
Windows Server 2003 and Windows XP: The target thread's initial stack is not freed, causing a resource leak.
TerminateThread is a dangerous function that should only be used in the most extreme cases. You should call TerminateThread only if you know exactly what the target thread is doing, and you control all of the code that the target thread could possibly be running at the time of the termination. For example, TerminateThread can result in the following problems:
我想问你为什么要调用它,因为它绝对是关闭线程的最后手段。除非您非常幸运或非常小心,否则您的应用程序将泄漏内存和其他资源。
关于c++ - 为处于挂起状态的线程调用 TerminateThread c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22188433/
我有一个应用程序,它通过 SetConsoleCtrlHandler 注册了句柄例程。事情是中断信号我必须在退出前做一些清理,这就是问题开始的时候。因为,其他线程继续运行并使用一些应该释放的资源,我在
所以我一直在学习 Windows API 中的线程,我写了一些测试代码,但我遇到了一些问题。首先我有两个功能: DWORD WINAPI MyThreadFunction( LPVOID lpPara
如何释放调用 TerminateThread 后剩余的虚拟内存?可以通过 VirtualFree 完成吗?当然如何。我完全理解 TerminateThread 的“危险”。 最佳答案 在非托管进程中,
我有一个使用 CreateThread 函数创建的 ThreadA。在 ThreadA 内部,另一个线程 ThreadB 是使用 CreateThread 函数创建的。 现在,我想从 ThreadA
如果我在 Windows 上使用 TerminateThread 终止线程函数,该线程是在函数返回后实际终止还是异步终止? 最佳答案 定义“实际终止”。文档说该线程不能再执行任何用户模式代码,如此有效
我的应用程序创建了一个线程并一直在后台运行。我只能手动终止线程,不能从线程回调函数中终止。目前我正在使用 TerminateThread() 来终止该线程,但它有时会导致它挂起。我知道有一种方法可以使
调用TerminateThread时,即使线程处于挂起状态,线程也会终止吗? 最佳答案 TerminateThread function销毁线程而不考虑其状态或可能的副作用。链接的 MSDN 页面对此
我使用 CreateThread 然后使用 TerminateThread 来取消线程。看起来堆栈空间仍然被分配。有办法解决这个问题吗?我没有使用任何形式的动态内存调用,例如 malloc/new。线
由于restrictions on DllMain(我知道这对DLL中的全局和静态对象构造函数和析构函数同样适用),像带异步文件写入/刷新线程的单例记录器这样的简单事情变得太棘手了。单例记录器位于DL
我有这个代码需要使用,但阻碍我的是 here它说 TerminateThread 适用于:仅桌面应用程序。我想知道是否可以在 azure Worker 角色中使用此代码,特别是在我用来运行 Worke
我有这个代码需要使用,但阻碍我的是 here它说 TerminateThread 适用于:仅桌面应用程序。我想知道是否可以在 azure Worker 角色中使用此代码,特别是在我用来运行 Worke
这个问题在这里已经有了答案: How to get the winapi id of a thread that has been created using the standard librar
如果我从 C++ 代码调用 TerminateThread,那么稍后我会收到 FatalExecutionEngineError MDA。该错误主要发生在我对字符串执行不同的操作(即 concat)时
我创建了创建两个线程的简单测试;第一个 (WorkerThreadFun) 执行无限循环,第二个 (WorkerGuardThreadFun) 以小超时终止它。 要终止的线程似乎没有进行显式分配(至少
我是一名优秀的程序员,十分优秀!