2014-03-04 28 views
-1
HANDLE threadHandle = CreateThread(?, ?, ?, .......); 
SetThreadPriority(threadHandle, priority); 
CloseHandle(threadHandle); 
threadHandle = NULL; 
............ 
+1

從你的角度來看,一個句柄通常只是一個整數(OK,有時候它是一個指針,但指針也是一個整數......),它通常只對提供句柄的API有意義即使是關閉API,它也是一個有意義的數字。通常這是一個很好的做法,它可以幫助調試,並且還可以減少一些相關的運行時錯誤(雙重關閉重用句柄)。 – pasztorpisti

+0

我添加的第二個用法如何?該用法是否有效?因爲closehandle不會終止線程。如果是的話,我該如何處理將線程句柄設置爲空? – ssn

+1

第二個用法是無效的,因爲在關閉句柄後,句柄的值對API沒有意義。在最糟糕的情況下,API已經重用先前關閉的句柄值,然後您的SetThreadPriority()調用會更改不屬於您的句柄的優先級。當然,大多數API在重用句柄值時會使用一些時間延遲,但有些API不會,例如在使用opengl的情況下,您可以輕鬆地解決關閉重用句柄的問題,然後您會看到呈現在渲染場景中的奇怪紋理/圖像... – pasztorpisti

回答

1

不,這不是要求 - 只是一個潛在的調試幫助。