创建线程后为什么马上调用CloseHandle()来关闭句柄
生活随笔
收集整理的這篇文章主要介紹了
创建线程后为什么马上调用CloseHandle()来关闭句柄
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
hThread = CreateThread( NULL, 0, ThreadFunc, NULL, 0, &dwThreadId);
CloseHandle(hThread);
如上面這樣的代碼,原因為:創建線程后返回了線程句柄,新創建的線程內核對象的使用計數是2,一個是線程本身,一個是創建線程的線程,創建線程的線程closehandle后,新的線程的內核對象使用計數為1,當這個新線程結束運行后內核對象的使用計數還要減1,這時內核對象的使用計數是0,則系統會自動刪除新線程的內核對象,這是正常的處理流程。
如果不調用CloseHandle();則新線程運行結束后,由于使用計數為1,所以不會刪除線程內核對象,這樣就會造成內存泄漏。當然在整個程序運行結束后,操作系統會回收這些內存,因此可以知道如果不調用CloseHandle()的話,在程序運行階段會造成內存泄漏!
總結
以上是生活随笔為你收集整理的创建线程后为什么马上调用CloseHandle()来关闭句柄的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 个人IOCP服务器例子解说
- 下一篇: IOCP(转)