CreateThread成功后,紧接CloseHandle,不解

kaphoon 2005-11-13 01:20:23
SDK的文档中,
Multithreaded Pipe Server那节有个例子.

fConnected = ConnectNamedPipe(hPipe, NULL) ?
TRUE : (GetLastError() == ERROR_PIPE_CONNECTED);

if (fConnected)
{
// Create a thread for this client.
hThread = CreateThread(
NULL, // no security attribute
0, // default stack size
(LPTHREAD_START_ROUTINE) InstanceThread,
(LPVOID) hPipe, // thread parameter
0, // not suspended
&dwThreadId); // returns thread ID

if (hThread == NULL)
{
printf("CreateThread failed");
return 0;
}
else CloseHandle(hThread);
}
else
// The client could not connect, so close the pipe.
CloseHandle(hPipe);
}


在成功创建一个线程后就调用CloseHandle(hThread).
hThread在创建后,计数为1,CloseHandle后,计数为0,也就是说hThread被删掉了!
那么这么做有什么意义呢?帮忙解释,谢谢!

...全文
416 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
kaphoon 2005-11-13
原来如此啊!
揭帖
回复
DentistryDoctor 2005-11-13
CloseHandle后线程仍然会正常执行,但却不能操控它了。
回复
vc_asm 2005-11-13
CreateThread启动了一个线程,同时产生一个句柄让你好操纵这个线程,如果你不要用这个句柄了就CloseHandle关掉它.不要想多了
回复
相关推荐
发帖
进程/线程/DLL
创建于2007-09-28

1.5w+

社区成员

VC/MFC 进程/线程/DLL
申请成为版主
帖子事件
创建了帖子
2005-11-13 01:20
社区公告
暂无公告