是否有Windows API或任何方式來確定我當前的線程在哪個物理處理器/內核上運行?我不需要這些信息。我只是好奇。確定我的代碼當前在哪個物理處理器上運行
我對允許線程運行的處理器不感興趣。我想知道它目前正在運行哪一個。我知道線程從一個切換到另一個很快......
是否有Windows API或任何方式來確定我當前的線程在哪個物理處理器/內核上運行?我不需要這些信息。我只是好奇。確定我的代碼當前在哪個物理處理器上運行
我對允許線程運行的處理器不感興趣。我想知道它目前正在運行哪一個。我知道線程從一個切換到另一個很快......
線程往往會從處理器到處理器切換,所以它是一種毫無意義的,但您可以使用GetCurrentProcessorNumber
正如其他人所說,你可以使用GetProcessAffinityMask或GetThreadIdealProcessor,但如果你已經那些只會工作爲該線程設置親和性掩碼或理想處理器。
要使用Windows API控制您的進程或線程在哪個處理器上運行,您可以使用SetThreadAffinityMask或SetProcessAffinityMask。
這些工作由一個位掩碼,其中每一位代表一個處理器的線程或進程設置位可定爲:
BOOL WINAPI SetProcessAffinityMask(
__in HANDLE hProcess,
__in DWORD_PTR dwProcessAffinityMask
);
呼叫GetProcessAffinityMask發現哪些處理器可用於在這些電話中使用。
您可以使用GetProcessAffinityMask來查詢處理器關聯性。如果你還沒有設置處理器親和力,我不確定結果會有多大用處,因爲線程可以在處理器之間運行。
沒想到這是可能的,但事實證明它是 - 編輯我的答案,以反映這一點。 –
不錯,沒有意識到這是可能的。 –
我可以做一些很酷的無用的東西,如統計信息或某種可視化信息;)謝謝 – Nick