TerminateThread为什么结束不了线程呢

zrdongjiao 2012-10-29 12:03:17




DWORD WINAPI ThreadFun(LPVOID p)
{
while(1)
{
///printf(" 子线程running \n");

Sleep(1000);
}

printf("线程结束了\n");





return 0;
}




int main()
{

typedef unsigned int (_stdcall *ThreadType )(LPVOID);

HANDLE hThread=(HANDLE)_beginthreadex(NULL,0,(ThreadType)ThreadFun,NULL,0,NULL);


printf("主线程 runing \n");


Sleep(500);


char c;


while( (c=getchar()) !='a');


//TerminateThread(HANDLE(944),1111);

TerminateThread(hThread,0);


if( GetExitCodeThread(hThread,&ExitCode) )
{

if(ExitCode==STILL_ACTIVE)
{
printf("子线程没有结束\n"); //这里可以打印出结果来,怎么回事
}
}



printf("主线程 dead \n");


CloseHandle(hThread);

return 0;
}


...全文
988 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
smilenot 2012-10-29
  • 打赏
  • 举报
回复
我测试了下,结果的确是这样的,但2楼的回答貌似解决了楼主的问题了
winginsky 2012-10-29
  • 打赏
  • 举报
回复
参考MSDN
Warning If a thread happens to return STILL_ACTIVE (259) as an error code, applications that test for this value could end up in an infinite loop
zrdongjiao 2012-10-29
  • 打赏
  • 举报
回复
yisiyou 2012-10-29
  • 打赏
  • 举报
回复
上面地址发错了。
yisiyou 2012-10-29
  • 打赏
  • 举报
回复
http://baike.baidu.com/view/2724978.htm
zrdongjiao 2012-10-29
  • 打赏
  • 举报
回复
TerminateThread的第二个参数,是否是随意指定的,

还有,如何查看一个线程是否活着?




[Quote=引用 5 楼 的回复:]

第二个问题:TerminateThread的第二个参数的问题

似乎 msdn的解释不对, 很明显,我传0的时候,是随意穿了一个数字进去,就结束了线程。

并非所谓的GetExitCodeThread获得的exticode
[/Quote]
zrdongjiao 2012-10-29
  • 打赏
  • 举报
回复
第二个问题:TerminateThread的第二个参数的问题

似乎 msdn的解释不对, 很明显,我传0的时候,是随意穿了一个数字进去,就结束了线程。

并非所谓的GetExitCodeThread获得的exticode
zrdongjiao 2012-10-29
  • 打赏
  • 举报
回复
TerminateThread(hThread,0);


while( GetExitCodeThread(hThread,&ExitCode) )
{

if(ExitCode!=STILL_ACTIVE)
{

printf("子线程结束\n");
break;
}
}
???


阁下认为,由于调用了该函数,结束了,但是 状态码的正确获取有延迟?

所以我主贴中的代码无法获得正确答案。

需要反复的调用?






[Quote=引用 2 楼 的回复:]

参考MSDN
Warning If a thread happens to return STILL_ACTIVE (259) as an error code, applications that test for this value could end up in an infinite loop
[/Quote]

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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