-
-
[求助]如何有效的关闭有循环操作线程的内核对象
-
发表于: 2009-12-9 12:01 3553
-
unsigned int __stdcall myThreadFun(LPVOID lpParameter)
{
for(int i=0;i<10;i++)
{
printf("%d\n", 2);
Sleep(1000);
}
return 0;
}
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
for(int i=0;i<5;i++)
{
HANDLE myHH = (HANDLE)_beginthreadex(NULL, 0, myThreadFun, NULL, 0, 0);
CloseHandle(myHH);
printf("myHH:%d\n", myHH);
Sleep(1000*2);
}
getchar();
return 0;
}
这段代码在运行后内核对象的计数只会增加,不会减少。但是如果修改成
unsigned int __stdcall myThreadFun(LPVOID lpParameter)
{
// for(int i=0;i<10;i++)
// {
// printf("%d\n", 2);
// Sleep(1000);
// }
printf("%d\n", 2);
return 0;
}
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
for(int i=0;i<5;i++)
{
HANDLE myHH = (HANDLE)_beginthreadex(NULL, 0, myThreadFun, NULL, 0, 0);
CloseHandle(myHH);
printf("myHH:%d\n", myHH);
Sleep(1000*2);
}
getchar();
return 0;
}
就没有问题了。
像这样对于第一种情况,一个有循环操作的线程,如何再完成线程以后有效的关闭内核对象呢?
(不能用WaitForSingleObject等待结束,因为同一时间还需要其他的操作)
[培训]科锐软件逆向54期预科班、正式班开始火爆招生报名啦!!!
赞赏
他的文章
赞赏
雪币:
留言: