線程句柄和線程ID的區別


●CreateThread() API 用於創建線程。 API 返回同時線程句柄,並通過參數得到線程標識符 (ID)。 線程句柄有完全訪問權創建線程對象。 運行線程時線程 ID 唯一標識線程在系統級別。
●ID是在Windows系統范圍內唯一標示Thread的。   
●Handle是用來操作Thread的,可以有多個,每個HANDLE可以有不同的操作權限,在不同進程OpenThread得到的值不一樣。  
●線程的ID是系統全局的,其HANDLE是進程局部的.

●此ID只在線程的生存期內有效。

●HANDLE是os和client之間用來操作進程和線程一個橋梁,os有一張維護HANDLE的表單,里面大概放置了   HANDLE的引用計數和有關的屬性,HANDLE是os標識進程和線程的東西,但是用戶也可以用這個來標識進程和線程,對其操作;而ID是os用來標識進程和線程的,並且是全局唯一的,  但用戶可以通過這個ID獲得進程線程的HANDLE,多次得到的HANDLE並不一定是一樣的.HANDLE是內核對象,而ID好像不是,並沒有專門創建ID的函數.

●ID是CreateThread時操作系統自動生成的。

●線程的句柄和id是不同的。  
  在windows系統中,線程的id是唯一對應的,也就是說,如果兩個線程返回相同的id,則他們必然是同一線程,反之一定是不同的線程。而線程的句柄並不是線程的唯一標識,線程的句柄只是用來訪問該線程的的一個32位值,盡管相同的句柄一定標識同一線程,但同一線程可能擁有兩個打開的句柄,因此,不能用句柄來區分兩個線程是否是同一線程。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM