MFC中如何判断一个线程已经结束了?

Longerandlonger 2010-09-20 08:40:10
用CreateThread()或AfxBeginThread()创建的线程,如何判断它线程已经结束了?
...全文
896 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
healer_kx 2010-09-20
  • 打赏
  • 举报
回复
你可以在最后设置一个标志量,或者用GetExitcodeThread。
Longerandlonger 2010-09-20
  • 打赏
  • 举报
回复
GetExitcodeThread 我试试看,先谢谢了
LanQuark 2010-09-20
  • 打赏
  • 举报
回复
6楼正确
GetExitcodeThread取得的是状态, 而不能确认线程结束. 如果使用GetExitcodeThread, 则你需要不停的调用GetExitcodeThread, 直到获得线程结束状态.
xengine-qyt 2010-09-20
  • 打赏
  • 举报
回复
GetExitcodeThread 这个不错!
return_torres 2010-09-20
  • 打赏
  • 举报
回复
DWORD WaitForSingleObject(
HANDLE hHandle, // handle to object
DWORD dwMilliseconds // time-out interval
);


例:
WaitForSingleObject(htread,INFINITE);
// 当等到htread句柄代表的线程结束后,才执行后面的代码。
return_torres 2010-09-20
  • 打赏
  • 举报
回复
所以exitcode只要不为STILL_ACTIVE,线程就结束了。

waitforsingleobject函数也可以,当线程结束时,其线程对象变为激发态
return_torres 2010-09-20
  • 打赏
  • 举报
回复
mfc我没用过,我是学的直接调用API,但道理应该是一样:

DWORD exitcode;
GetExitcodeThread(hthread,&exitcode);

这是得到句柄为htread的线程的退出码,在exitcode中返回,当线程仍未结束时,exitcode==STILL_ACTIVE

pengzhixi 2010-09-20
  • 打赏
  • 举报
回复
Fun()返回不代表主线程结束
Longerandlonger 2010-09-20
  • 打赏
  • 举报
回复
我是在一个成员函数Fun()里创建两个线程:一个正常运行;另一个显示时间,直到第一个线程结束。

还有一点不明白,Fun()应该创建完线程后就返回了,它创建的线程怎么没强制结束呢?
  • 打赏
  • 举报
回复
你线程函数 肯定有个return,如果执行了return,就表明这个线程结束了

64,681

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧