C++ 确定线程是否已退出

C++ 确定线程是否已退出,c++,mfc,C++,Mfc,我使用AfxBeginThread创建新线程。我已经尝试过用AfxExitThread退出线程,然后只返回一个值。这两种方法都应该是退出线程的有效方法 但是,当调用GetExitCodeThread时,即使在几个小时后,我仍然会激活。另外,当使用(WaitForSingleObject(ahtresspondthreads[i],0)=WAIT\u OBJECT\u 0)时,显示线程对象仍然有效 你应该如何判断一个线程是否真的退出了?是的,我知道我可以在函数退出之前设置一些变量,但我认为我应该能

我使用
AfxBeginThread
创建新线程。我已经尝试过用AfxExitThread退出线程,然后只返回一个值。这两种方法都应该是退出线程的有效方法

但是,当调用
GetExitCodeThread
时,即使在几个小时后,我仍然会激活
。另外,当使用
(WaitForSingleObject(ahtresspondthreads[i],0)=WAIT\u OBJECT\u 0)时,
显示线程对象仍然有效


你应该如何判断一个线程是否真的退出了?是的,我知道我可以在函数退出之前设置一些变量,但我认为我应该能够查询线程句柄,知道它已经退出或不再是有效线程。

GetExitCodeThread()
WaitForSingleObject()
不要撒谎,因此,如果两者都说线程仍然处于活动状态,那么线程实际上仍然处于活动状态,并且尚未退出其控制功能。检查函数中是否存在错误,以确保它在您预期的情况下确实正在退出。

GetExitCodeThread()
WaitForSingleObject()
不存在错误,因此如果两者都说线程仍然处于活动状态,那么线程确实仍然处于活动状态,并且尚未退出其控制功能。检查函数中是否存在bug,以确保函数在您期望的情况下确实正在退出。

这两种方法都应该可以工作,我建议您检查代码中是否存在您可能遗漏的bug,同时我还看到了另一篇文章,可能可以帮助您解决这些bug

注意事项:

我所知道的结束线程的最佳方法是确保线程不会无限期休眠。当它完成任务时,让它检查一个变量,这将告诉它是否应该退出

i、 e

  • 设旗
  • 如果睡着了,唤醒线程
  • 检查工作是否完成
  • 清理资源
  • 出口

  • 这两种方法都应该是有效的,我建议你检查一下你的代码是否有任何你可能错过的bug,我还看到了另一篇文章,它可能会帮助你解决

    注意事项:

    我所知道的结束线程的最佳方法是确保线程不会无限期休眠。当它完成任务时,让它检查一个变量,这将告诉它是否应该退出

    i、 e

  • 设旗
  • 如果睡着了,唤醒线程
  • 检查工作是否完成
  • 清理资源
  • 出口