是否有Windows API或任何方法来确定我当前的线程运行在哪个物理处理器/核心上?我不需要那些信息。我只是好奇。
我对允许线程运行的处理器不感兴趣。我想知道它目前运行的是哪一个。我知道线程从一个切换到另一个......
答案 0 :(得分:4)
线程经常会从处理器切换到处理器,因此它没有任何意义,但您可以使用GetCurrentProcessorNumber
。
正如其他人所说,您可以使用GetProcessAffinityMask
或GetThreadIdealProcessor
,但只有在您已为线程设置了亲和力掩码或理想处理器时,这些才有效。
答案 1 :(得分:3)
您可以使用GetProcessAffinityMask查询处理器关联。如果你没有设置处理器亲和力,我不确定结果会有多大,因为线程可以在处理器之间进行过滤。
答案 2 :(得分:2)
要使用Windows API控制您的进程或线程运行的处理器,您可以使用SetThreadAffinityMask或SetProcessAffinityMask。
这些工作通过在位掩码中设置位来实现,其中每个位代表您的线程或进程可以安排的处理器:
BOOL WINAPI SetProcessAffinityMask(
__in HANDLE hProcess,
__in DWORD_PTR dwProcessAffinityMask
);
致电GetProcessAffinityMask,了解哪些处理器可供这些来电使用。