當程序結束後,核心物件一定會被銷毀嗎?
msdn關於closehandle()這個函式有這麼一段解釋。
closing a thread handle does not terminate the associated thread.
to remove a thread object, you must terminate the thread, then clo-
se all handles to the thread.
關閉執行緒控制代碼不一定銷毀相關聯的執行緒物件。要移除執行緒物件,你必須
摧毀執行緒,然後關閉這個執行緒的所有控制代碼。
從這一句話可以看出來,執行緒結束後,執行緒物件不一定被移除,還要關
閉所有的關聯到這個執行緒的執行緒控制代碼才可以。
現在我是這麼認為的,乙個核心物件要被銷毀,當且僅當某次呼叫clos-
ehandle核心物件的計數器減1之後,這個核心物件的計數器變為0的時
候,才會被關閉。其他任何情況(關機不算),這個核心物件都不會被關
閉。歡迎隨時指正。謝謝。
關於System V程序通訊核心物件的刪除
system v ipc的缺點 當程序結束時,不會自動刪除程序通訊的核心物件,並且能夠使用ipcs命令檢視核心物件,如下 1 重啟os,沒啥大毛病,但是不方便。2 當程序使用完畢後,呼叫相應的系統api進行刪除,當然這裡需要注意的是呼叫的時機,必須是使用完成後。3 使用ipcs命令,是相對簡單可行的...
程序的核心物件控制代碼表
當程序初始化的時候,系統會為其分配乙個控制代碼表。該控制代碼表只用於核心物件。具體該控制代碼表在系統中是種怎樣的結構和是怎麼被系統管理的,現在沒有說明文件。程序控制代碼表的大體結構如下 index pointer to kernal object memory block access mask f...
程序的核心物件控制代碼表
當乙個程序被初始化時,系統要為它分配乙個控制代碼表。該控制代碼表只用於核心物件,不用於使用者物件或gdi物件。它只是個資料結構的陣列。每個結構都包含乙個指向核心物件的指標 乙個訪問遮蔽和一些標誌。程序的控制代碼結構 索引 核心物件記憶體塊的指標 訪問遮蔽 標誌位的dword 標誌 標誌位的dword...