为什么要在_beginthread之后立即CloseHandle()它?-----来自网络

为什么要在_beginthread之后立即CloseHandle()它?-----来自网络

csoapy 发表于 2006-8-19 9:48:25

看了几个多线程的示例代码,都是这么做的。
查了下MSDN,它说 CloseHandle时如果是被关的对象是线程的话也不会引起线程退出。
不明白。
song_09 发表于 2006-8-19 13:11:31

创建线程后会返回一个线程句柄,线程的使用记数为2,在你得到线程句柄后如果不对线程进行其他操作的话就通过 CloseHandle()关闭该句柄,同时线程记数-1。线程执行退出时,记数也会减1,记数为0时,操作系统会释放线程的句柄资源,因此,大多数情况下,创建完线程后都会关闭线程句柄。跟多详细信息可以参考《windows核心编程》。
louifox 发表于 2006-8-19 13:14:42

关闭线程句柄不会引起线程结束,只是减少线程内核对象的引用计数。
hailongchang 发表于 2006-8-23 16:47:02

线程是一种内核对象,系统维护着每一个内核对象,当每个内核对象引用记数为0时,系统就从内存中释放该对象, CloseHandle就是将该线程对象的引用记数减1

你可能感兴趣的:(为什么要在_beginthread之后立即CloseHandle()它?-----来自网络)