java句柄是什么意思 為什么必須要使用CloseHandle關(guān)閉句柄?
為什么必須要使用CloseHandle關(guān)閉句柄?許多程序在創(chuàng)建線程時(shí)都是這樣寫的:threadhandle=createthread(null,0,…)closehandel(threadhandle
為什么必須要使用CloseHandle關(guān)閉句柄?
許多程序在創(chuàng)建線程時(shí)都是這樣寫的:
threadhandle=createthread(null,0,…)
closehandel(threadhandle)
1。線程和線程句柄不是一回事。線程在CPU上運(yùn)行。線程句柄是內(nèi)核對象。我們可以通過句柄操作線程,但線程的生命周期與線程句柄的生命周期不同。線程的生命周期是從線程函數(shù)執(zhí)行開始到返回。線程句柄的生命周期是從createthread到closehandle()。
2. 線程句柄是一種內(nèi)核對象。系統(tǒng)維護(hù)每個內(nèi)核對象。當(dāng)每個內(nèi)核對象的引用計(jì)數(shù)為0時(shí),系統(tǒng)從內(nèi)存中釋放該對象。CloseHandle將線程對象的引用計(jì)數(shù)減少1。如果內(nèi)核句柄(包括線程)用完,必須很快關(guān)閉所有系統(tǒng)資源。
僅關(guān)閉線程句柄對象意味著我將不再使用該句柄,也就是說,我將不會干擾該句柄對應(yīng)的線程。線沒有結(jié)束。
JAVA中的術(shù)語:句柄是啥意思?
句柄的本質(zhì):一個唯一的整數(shù),作為一個對象的ID,將不同的對象與同類的不同實(shí)例區(qū)分開來。程序可以通過句柄訪問對象的部分信息。句柄不表示對象的內(nèi)存地址。句柄和指針的區(qū)別:程序不能通過句柄直接讀取文件中的信息,指針可以。從這個角度來看,句柄是一個弱化的指針,它更安全,功能更少。如果句柄不再在I/O文件中,它就沒用了。