由CloseHandle()函数引发的关于线程和线程句柄的一些解释
来源:互联网 发布:python re.compile 编辑:程序博客网 时间:2024/05/16 04:32
1,线程和线程句柄(Handle)不是一个东西,线程是在cpu上运行的.....(说不清楚了),线程句柄是一个内核对象。我们可以通过句柄来操作线程,但是线程的生命周期和线程句柄的生命周期不一样的。线程的生命周期就是线程函数从开始执行到return,线程句柄的生命周期是从CreateThread返回到你CloseHandle()。
2,所有的内核对象(包括线程Handle)都是系统资源,用了要还的,也就是说用完后一定要closehandle关闭之,如果不这么做,你系统的句柄资源很快就用光了。3,如果你CreateThread以后需要对这个线程做一些操作,比如改变优先级,被其他线程等待,强制TermateThread等,就要保存这个句柄,使用完了在CloseHandle。如果你开了一个线程,而不需要对它进行如何干预,CreateThread后直接CloseHandle就行了。所以CloseHandel(ThreadHandle );只是关闭了一个线程句柄对象,表示我不再使用该句柄,即不对这个句柄对应的线程做任何干预了。并没有结束线程。如果你觉得多了一个变量,也可以写为:CloseHandel(CreateThread(NULL,0,.....));
CloseHandle的功能是关闭一个打开的对象句柄,该对象句柄可以是线程句柄,也可以是进程、信号量等其他内核对象的句柄,而ExitThread的功能是终止一个线程,它所接受的参数是一个线程的退出码。
通过调用CloseHandle可以告知系统,已经完成了对某一内核对象的操作,该函数首先检查调用进程的句柄表,来确认进程是否对该句柄所指向的对象有访问权,如果句柄无效则返回FALSE,如果有效,系统将得到该内核对象的数据结构的地址,把结构中的使用计数成员减1,如果计数变为0,则将从内核中释放该内核对象。
如果计数还未到0,就意味着还有其他的进程在使用这个内核对象,那么它就不会被释放。
- 由CloseHandle()函数引发的关于线程和线程句柄的一些解释
- CloseHandle()函数(关闭线程句柄)的使用
- CloseHandle()函数(关闭线程句柄)的使用
- 线程的CloseHandle和WaitForSingleObject
- 线程的CloseHandle
- 线程的CloseHandle()
- 线程的CloseHandle
- 线程的CloseHandle
- 线程中 CloseHandle()函数的使用
- 线程中 CloseHandle()函数的使用
- 线程中 CloseHandle()函数的使用
- 线程中 CloseHandle()函数的使用
- 关于线程的句柄资源
- 由一个线程例子引发的思考
- 线程中的CloseHandle()函数
- 线程句柄和线程ID的区别
- 线程的句柄和标识符
- 线程的终止_beginthread和_endthread或者CloseHandle()
- “美人计”
- 活着就是珍惜
- 软件皮肤 IrisSkin
- 白克明:唐山震后30年3个阶段 大力弘扬抗震精神
- 类成员初始化总结
- 由CloseHandle()函数引发的关于线程和线程句柄的一些解释
- [求助]关于变量传递的问题……
- 唐山地震曾重创北京密云水库 为修坝炸掉半座山
- Asp.net的Session过期问题
- 唐山大地震死亡人数是如何披露的?
- IE7还没有用多久,IE8已经出来了,微软明显加快了步伐了!!
- 最后的女兵拍记录片 纪念地震中逝去的战友(图)
- 最后的女兵拍记录片 纪念地震中逝去的战友(图)
- 黑客,黑客!