我正在爲Windows編寫一段C++代碼,需要查詢進程及其各個線程的時序。安全/定義爲假定Windows僞句柄的值?
爲了做必要的系統調用,我需要進程及其每個線程的句柄。我正在使用返回僞句柄的getCurrentProcess
和getCurrentThread
函數。進一步檢查後,我注意到所有線程的僞句柄共享相同的值。
在互聯網上簡單搜索後,我發現下面的文章,報告了相同的值的進程和線程的僞處理,因爲我得到了:https://weseetips.wordpress.com/2008/03/26/getcurrentthread-returns-pseudo-handle-not-the-real-handle/
我的問題:是它的安全和/或定義從一個線程調用getCurrentThread
一次,並在所有其他線程中使用返回的僞句柄讓它們引用它們自己?
使用當前的實現,它按預期工作。我只是想知道這種行爲是否有保證。換句話說,它可以在任何提供了getCurrentThread
功能的Windows平臺上工作;並會改變行爲被認爲是一個突破性的變化?
的documentation for the getCurrentThread
function國家(重點煤礦):
僞句柄是一個特殊的常量,它是解釋爲 當前線程手柄。當需要線程句柄時,調用線程可以使用該句柄至 指定自己。 [...]
這讓我相信這個特殊的僞句柄只是「當前線程」的別名,因此可以在所有線程中共享,讓他們引用自己。另一方面,文檔還說,返回值可以被調用線程使用,因此我的困惑!
僞句柄就像'.'目錄條目。如果您執行'cd AnotherDirectory',那麼仍然存在'.'目錄項,但現在它指向新的當前目錄。 – MSalters