c++ 多线程:线程句柄可以提前关闭,但是线程并没有关闭
生活随笔
收集整理的這篇文章主要介紹了
c++ 多线程:线程句柄可以提前关闭,但是线程并没有关闭
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
很多程序在創(chuàng)建線程都這樣寫的:
ThreadHandle = CreateThread(NULL,0,.....);
CloseHandel(ThreadHandle );
1,線程和線程句柄(Handle)不是一個(gè)東西,線程是在cpu上運(yùn)行的.....(說不清楚了),線程句柄是一個(gè)內(nèi)核對(duì)象。我們可以通過句柄來操作線程,但是線程的生命周期和線程句柄的生命周期不一樣的。線程的生命周期就是線程函數(shù)從開始執(zhí)行到return,線程句柄的生命周期是從CreateThread返回到你CloseHandle()。
2,線程句柄是一種內(nèi)核對(duì)象,系統(tǒng)維護(hù)著每一個(gè)內(nèi)核對(duì)象,當(dāng)每個(gè)內(nèi)核對(duì)象引用記數(shù)為0時(shí),系統(tǒng)就從內(nèi)存中釋放該對(duì)象,CloseHandle就是將該線程對(duì)象的引用記數(shù)減1。所有的內(nèi)核對(duì)象(包括線程Handle)都是系統(tǒng)資源,用了要還的,也就是說用完后一定要closehandle關(guān)閉之,如果不這么做,你系統(tǒng)的句柄資源很快就用光了。
只是關(guān)閉了一個(gè)線程句柄對(duì)象,表示我不再使用該句柄,即不對(duì)這個(gè)句柄對(duì)應(yīng)的線程做任何干預(yù)了。并沒有結(jié)束線程。
總結(jié)
以上是生活随笔為你收集整理的c++ 多线程:线程句柄可以提前关闭,但是线程并没有关闭的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 码率问题
- 下一篇: CC++动态分配内存(手动分配内存)三种