考虑下面的线程函数:马上有一个正在运行的线程退出,当一个特定的事件发出信号
UINT MyClass::threadFunc(LPVOID lParam)
{
// 1. Initialize stuff
// 2. Validate stuff
// 3. Do first task
// 4. Do second task
// 5. Un-initialize everything and return
}
这个线程是由我的应用程序的对话框创建。此线程在对话的生命周期中只运行一次(它是一个工作线程)。我想通知这个线程立即返回,这样我的对话框可以正常退出(在等待这个线程之后)终止)。我不能只是退出对话框,因为这个线程仍然在运行。
我是比较新的C++,这是我所想象的(伪)的:
- 环绕在
try-catch
线程功能。 - 发生该异步事件时,抛出线程终止异常。
这不起作用,所以我研究了一下,找到了类似于this one的答案。但由于某种原因,我有一种感觉,有一种更简单的方法来实现这一点。在我执行这个想法之前,我只是想澄清一下。
谢谢!
+1好问题,我有时需要这种功能可以优雅地中止线程。 – deepmax 2013-03-09 07:31:18