线程的CloseHandle

原创 2007年09月12日 15:18:00

 1,线程的handle用处:

    线程的handle是指向“线程的内核对象”的,而不是指向线程本身.每个内核对象只是内核分配的一个内存块,并且只能由内核访问。该内存块是一种数据结构,它的成员负责维护对象的各种信息(eg: 安全性描述,引用计数等)。

2,CloseHandle()作用

   在CreateThread成功之后会返回一个hThread的handle,且内核对象的计数加1,CloseHandle之后,引用计数减1,当变为0时,系统删除内核对象。

   但是这个handle并不能完全代表这个线程,它仅仅是线程的一个“标识”,系统和用户可以利用它对相应的线程进行必要的操纵。如果在线程成功创建后,不再需要用到这个句柄,就可以在创建成功后,线程退出前直接CloseHandle掉,但这并不会影响到线程的运行。

3,不执行CloseHandle() 带来的后果

   若在线程执行完之后,没有通过CloseHandle()将引用计数减1,在进程执行期间,将会造成内核对象的泄露,相当与句柄泄露,但不同于内存泄露,这势必会对系统的效率带来一定程度上的负面影响。但是,请记住,当进程结束退出后,系统仍然会自动帮你清理这些资源。但是在这里不推荐这种做法,毕竟不是一个良好的编程习惯!呵呵!
 

线程创建后为什么要调用CloseHandle

很多程序在创建线程都这样写的:  ............  ThreadHandle = CreateThread(NULL,0,.....);  CloseHandel(ThreadHand...
  • qq_25867649
  • qq_25867649
  • 2016年03月31日 09:41
  • 1300

多线程中CloseHandle()函数的使用

CloseHandle()函数的使用?? 很多程序在创建线程都这样写的: ............ ThreadHandle = CreateThread(NULL,0,.....); ...
  • jimeshui
  • jimeshui
  • 2016年03月19日 19:31
  • 1013

C++进阶—> CloseHandle详解及CloseHandle后线程未停

函数说明 BOOL CloseHandle(HANDLE hObject); 参数 hObject :代表一个已打开对象handle。 返回值 TRUE:执行成功; FALSE:执行失败,...
  • u011028345
  • u011028345
  • 2017年10月26日 14:14
  • 132

获取指定进程模块handle 然后FreeLibrary掉

转网上李马大哥的,GetExitCodeThread原来可以这么用,哈  1. // 使目标进程调用GetModuleHandle,获得DLL在目标进程中的句柄 2. DWORD dw...
  • vincent_1011
  • vincent_1011
  • 2009年02月02日 22:39
  • 2202

多线程CreateThread()之后,CloseHandle()为什么不会直接关闭线程。

在调用CreateHandle创建线程之后,线程内核对象的引用计数不为1,再CloseHandle就会使其引用计数减至0,系统就会销毁该内核对象, 那为什么一般要立即执行CloseHandle()函数...
  • Leave_RAINBOW
  • Leave_RAINBOW
  • 2016年03月13日 19:04
  • 901

CloseHandle()函数(关闭线程句柄)的使用

 很多程序在创建线程都这样写的:............ThreadHandle = CreateThread(NULL,0,.....);CloseHandel(ThreadHandle );。。。...
  • LittleGreenFrog
  • LittleGreenFrog
  • 2010年03月05日 09:10
  • 3774

多线程--内核对象和句柄泄露&CloseHandle

多线程--内核对象和句柄泄露&CloseHandle 1.什么是内核对象? 内核对象是操作系统分配的一个内存块,该内存块是一个数据结构,用于管理对象的相关信息。 当应用程序要...
  • softfox
  • softfox
  • 2013年01月27日 19:31
  • 1638

为什么可以在不结束线程的情况下关闭其handle?

线程的 handle 是指向“线程核心对象”,而不是指向线程本身。对大部 分 API 而言,这项差异没什么影响。当你调用 CloseHandle( )并给予它一个 线程 handle 时,你只不过是表...
  • zlfxyq
  • zlfxyq
  • 2016年11月06日 12:36
  • 203

线程的终止_beginthread和_endthread或者CloseHandle()

线程的终止_beginthread和_endthread或者CloseHandle()  (2014-03-27 19:07:07) 转载▼ 线程内部细节 1.CreateThread ...
  • guyue35
  • guyue35
  • 2015年05月12日 10:23
  • 1554

线程closehandle

线程运行结束后,必须closehandle吗?楼主yu4233(于)2006-03-21 23:53:35 在 VC/MFC / 进程/线程/DLL 提问我有一个程序,主线程接收到用户操作后,就会_b...
  • TheGameIsFives
  • TheGameIsFives
  • 2008年09月24日 13:59
  • 2136
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:线程的CloseHandle
举报原因:
原因补充:

(最多只允许输入30个字)