确定我的代码当前正在运行的物理处理器

时间:2009-08-27 14:13:56

标签: windows processor

是否有Windows API或任何方法来确定我当前的线程运行在哪个物理处理器/核心上?我不需要那些信息。我只是好奇。

我对允许线程运行的处理器不感兴趣。我想知道它目前运行的是哪一个。我知道线程从一个切换到另一个......

3 个答案:

答案 0 :(得分:4)

线程经常会从处理器切换到处理器,因此它没有任何意义,但您可以使用GetCurrentProcessorNumber

正如其他人所说,您可以使用GetProcessAffinityMaskGetThreadIdealProcessor,但只有在您已为线程设置了亲和力掩码或理想处理器时,这些才有效。

答案 1 :(得分:3)

您可以使用GetProcessAffinityMask查询处理器关联。如果你没有设置处理器亲和力,我不确定结果会有多大,因为线程可以在处理器之间进行过滤。

答案 2 :(得分:2)

要使用Windows API控制您的进程或线程运行的处理器,您可以使用SetThreadAffinityMaskSetProcessAffinityMask

这些工作通过在位掩码中设置位来实现,其中每个位代表您的线程或进程可以安排的处理器:

BOOL WINAPI SetProcessAffinityMask(
  __in  HANDLE hProcess,
  __in  DWORD_PTR dwProcessAffinityMask
);

致电GetProcessAffinityMask,了解哪些处理器可供这些来电使用。