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
设旗
如果睡着了,唤醒线程
检查工作是否完成
清理资源
出口