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被删掉了!
那么这么做有什么意义呢?帮忙解释,谢谢!

...全文
414 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
kaphoon 2005-11-13
原来如此啊!
揭帖
回复
DentistryDoctor 2005-11-13
CloseHandle后线程仍然会正常执行,但却不能操控它了。
回复
vc_asm 2005-11-13
CreateThread启动了一个线程,同时产生一个句柄让你好操纵这个线程,如果你不要用这个句柄了就CloseHandle关掉它.不要想多了
回复
相关推荐
CreateThread成功后,紧接CloseHandle,
SDK的文档中, Multithreaded Pipe Server那节有个例子. fConnected = ConnectNamedPipe(hPipe, NULL) ? TRUE : (GetLastError() == ERROR_PIPE_CONNECTED);
CreateThread()之后又马上CloseHandle()的问题
ThreadHandle = CreateThread(NULL,0,.....); CloseHandel(ThreadHandle ); 。。。。。 这不是刚好创建又关闭了吗?线程怎么运行呢? ================================================ Closing a thread handle ...
为什么是Createthread后CloseHandle
CloseHandle()函数隐藏在Createthread后面究竟有什么作用?? 很多程序在创建线程都这样写的: ............ ThreadHandle = CreateThread(NULL,0,.....); CloseHandel(ThreadHandle ); 。。。。。 这不是...
CreateThread后立即CloseHandle,为什么线程还在运行?
最近回顾了下多线程的东西,碰到CloseHandle函数,之前也碰到过,但是自己积累不足,所以也没理解明白。这次再次碰到,想想积累的也差不多了,索性就搞个明白。 函数说明 BOOL CloseHandle(HANDLE hObject); ...
多线程CreateThread()之后,CloseHandle()为什么不会直接关闭线程。
在调用CreateHandle创建线程之后,线程内核对象的引用计数不为1,再CloseHandle就会使其引用计数减至0,系统就会销毁该内核对象, 那为什么一般要立即执行CloseHandle()函数呢
CreateThread,CloseHandle
CreateThread启动了一个线程,同时产生一个句柄让你好操纵这个线程,如果你不要用这个句柄了就CloseHandle关掉它。 调用这个CloseHandle并不意味着结束线程,而是表示不关心此句柄的状态了,也就无法控制子进程的...
createthreadclosehandle
一,在程序中建立线程的概念  对于一个进程而言,在进程建立,同时系统也会为进程自动分配一个主线程。...创建一个线程有几种方法,这里我们先学习的是利用CreateThread()函数创建线程,此函数的参数及具体用
CloseHandle()函数隐藏在Createthread后面究竟有什么作用
CloseHandle()函数隐藏在Createthread后面究竟有什么作用?? 很多程序在创建线程都这样写的: ............ ThreadHandle = CreateThread(NULL,0,.....); CloseHandel(ThreadHandle ); 。。。。。 这不是...
VC中CWinThread类以及和createthread API的区别分析
主要介绍了VC中CWinThread类以及和createthread API的区别分析,较为详细的讲述了CWinThread类的原理,并以实例形式对AfxBeginThread函数的内部实现进行了解释说明,需要的朋友可以参考下
线程创建为什么要调用CloseHandle
ThreadHandle = CreateThread(NULL,0,.....);  CloseHandel(ThreadHandle );  。。。。。  这不是刚好创建又关闭了吗?线程怎么运行呢? ================================================ Closing
易语言CreateThread启动线程传递多个类型参数.rar
易语言CreateThread启动线程传递多个类型参数,可以自定义数据类型,可以传递多个类型的多个参数源码。
CreateThread正常创建线程线程不运行
HANDLE hThread=CreateThread(NULL,0,fun,NULL,0,NULL); if(hThread==NULL) { printf("err\n"); } } 上述代码在main函数中创建一个子线程,线程创建是没有问题的,但是线程却没有运行。 解决方案: 线程创建...
createthread函数用法详解
详细介绍了createthread函数 在程序中的运用 对于c++多线程的学习有很大帮助
CreateThread()与beginthread()的区别详细解析
我们知道在Windows下创建一个线程的方法有两种,一种就是调用Windows API CreateThread()来创建线程;另外一种就是调用MSVC CRT的函数_beginthread()或_beginthreadex()来创建线程。相应的退出线程也有两个函数...
关于createthreadclosehandle
一,在程序中建立线程的概念 对于一个进程而言,在进程建立,同时系统也会为进程自动分配一个...创建一个线程有几种方法,这里我们先学习的是利用CreateThread()函数创建线程,此函数的参数及具体用法参见MSDN。如果
关于createthreadclosehandle
创建一个线程有几种方法,这里我们先学习的是利用CreateThread()函数创建线程,此函数的参数及具体用法参见MSDN。如果创建线程成功,函数则返回一个新的线程句柄。(根据《Windows核心编程》,线程
C++进阶—> CloseHandle详解及CloseHandle后线程未停
函数说明 BOOL CloseHandle(HANDLE hObject); 参数 hObject :代表一个已打开对象handle。 返回值 TRUE:执行成功;...FALSE:执行失败,可以调用GetLastError()获知失败原因。...当调用CloseHandle成功后,相关的内...
CloseHandle用法的理解
ThreadHandle = CreateThread(NULL,0,.....); CloseHandle(ThreadHandle ); 。。。。 这不是刚好创建又关闭了吗?线程怎么运行呢? ================================================ Closing a thread ...
AfxBeginThread和CreateThread创建工作线程
分别采用AfxBeginThread CreateThread 创建线程其中AfxBeginThread工程用的是vs2010 CreateThread 工程用的是vc6.0
VS2017 用createthread创建线程,如何结束任务
使用createthread创建了线程,启动了BF.startupdate()函数,开始升级; 如果我想结束升级,要如何操作? 有BF.endupdate()函数,我需要再创建一个线程执行BF.endupdate()函数结束升级么? 还是说closethread...
CreateThread与_beginthreadex本质区别
介绍了delphi中CreateThread与_beginthreadex本质区别。
C++ a demo for Scoket&CreateThread;
使用CreateThread创建两个线程通过Scoket进行通信,相互发送数据。
PPT模板下载
PPT模板下载我只是想要点积分啊 
vue-devtools chrome 插件
chrome(谷歌浏览器)vue代码调试插件, 已打包。解压后,通过chrome扩展程序加载即可使用。 使用方法: 1、chrome浏览器输入地址“chrome://extensions/”进入扩展程序页面 2、勾选开发者模式 3、点击“加载已解压的扩展程序...”按钮,选择解压后的chrome文件夹,即可添加成功。 4、添加完vue-devtools扩展程序之后,我们在调试vue应用的时候,ch rome开发者工具中会看一个vue的一栏,点击之后就可以看见当前页面vue对象的一些信息
C语言大型软件设计的面向对象
C语言代码一旦达到一定规模,就特别强调良好的架构设计,以保证代码的可读性好、代码简洁以及可复用。此时,软件设计师势必要用C语言来做面向对象的设计。不能克服面向对象这一关,也是很多人无法读懂Linux内核、驱动等架构比较庞大的软件的主要技术壁垒之一,因为这些软件里面充满了对象式的设计。 本课程以案例来详细讲解,用C语言如何设计面向对象的程序。 本课程以案例来详细讲解,用C语言教大家如何设计面向对象的程序。
SpringCloud微架构
SpringCloud是现在热门的RPC开发框架,也是以后的RPC开发趋势。在本套课程之中将为读者详细的讲解分布式技术的发展历史、以及各种分布式开发优缺点,同时详细的分析了整个SpringCloud中所涉及到的技术点以及相关作用。 本课程将基于Rest服务、SpringSecurity访问进行讲解,详细的讲解了Eureka注册发现服务、Eureka-HA机制、服务部署处理、Ribbon负载均衡、Feign接口映射、Hystrix熔断处理、Zuul代理访问等SpringCloud核心内容。随后在基础内容的讲解基础上又为读者讲解了SpringCloudConfig、GITHUB服务配置、消息服务、服务监控等辅助内容。
《UML面向对象需求分析与建模教程》 邹盛荣 主编 电子版 2016.01 .doc
PPT已在CSDN均可免费下载 《UML面向对象需求分析与建模教程》 邹盛荣 主编 电子版 2016.01 .doc 当当网上可购买纸质书: http://product.dangdang.com/23766413.html
STM32F407 / F103 PCF8575模块 控制16个I/O口 IIC通信
本例程为STM32F407控制PCF8575模块的16个I/O口输出,本例程基于正点原子STM32F407 IIC例程修改,本例程中使用PCF8575控制16个继电器。
计算机网络技术教程
本课程适用于计算机和通信相关专业的学生、准备考华为和思科认证但是基础不扎实的、想学黑客和网络安全的、考研的同学、没有系统学习过网络的编程人员和相关从业人员,课程从理论讲起,以理论为主,在后边章节补充了考研、考试的知识,也补充了生活中的网络应用。 让大家理解网络的概念,让计算机和通信相关专业的学生、准备考华为和思科认证但是基础不扎实的、想学黑客和网络安全的、考研的同学、没有系统学习过网络的编程人员和相关从业人员,在为以后的学习打下良好的基础,同时课程后边补充了考研、考试的知识,也补充了生活中的网络应用。
比较两张图片差异
比较两张图片差异,代码收集于网上,码收集于网上
发帖
进程/线程/DLL
创建于2007-09-28

1.5w+

社区成员

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