代码之家  ›  专栏  ›  技术社区  ›  Nick

确定我的代码当前在哪个物理处理器上运行

  •  3
  • Nick  · 技术社区  · 15 年前

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

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

    3 回复  |  直到 6 年前
        1
  •  4
  •   Azeem Rob Hyndman    6 年前

    线程通常会从处理器切换到处理器,所以这有点毫无意义,但是您可以使用 GetCurrentProcessorNumber .

    正如其他人所说,你可以使用 GetProcessAffinityMask GetThreadIdealProcessor ,但只有当您已经为线程设置了关联掩码或理想的处理器时,这些方法才有效。

        2
  •  3
  •   Rowland Shaw    15 年前

    您可以查询与 GetProcessAffinityMask . 如果您没有设置处理器关联性,我不确定结果有多有用,因为线程可以在处理器之间切换。

        3
  •  2
  •   Simon Steele    15 年前

    用于使用Windows API控制进程或线程运行的处理器 SetThreadAffinityMask SetProcessAffinityMask .

    这些工作方式是在位掩码中设置位,其中每个位表示线程或进程可以调度的处理器:

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

    呼叫 GetProcessAffinityMask 以发现哪些处理器可用于这些调用。