C++ C++;SetProcessAffinityMask使用所有处理器

C++ C++;SetProcessAffinityMask使用所有处理器,c++,process,C++,Process,我想将进程设置为使用所有处理器。我试过了 SetProcessAffinityMask(GetCurrentProcess(), 0); 但是它并没有设置为所有处理器。如果您阅读Microsoft文档,您会发现需要指定一个1位才能在该处理器上运行。您正在进行的调用将不允许您的进程在任何CPU上运行,因此这可能会被拒绝。检查SetProcessAffinityMask调用的返回值,然后根据需要调用GetLastError以找出原因 一个新的进程被设置为在所有CPU上运行,因此您不需要调用此函数来

我想将进程设置为使用所有处理器。我试过了

SetProcessAffinityMask(GetCurrentProcess(), 0);

但是它并没有设置为所有处理器。

如果您阅读Microsoft文档,您会发现需要指定一个
1
位才能在该处理器上运行。您正在进行的调用将不允许您的进程在任何CPU上运行,因此这可能会被拒绝。检查
SetProcessAffinityMask
调用的返回值,然后根据需要调用
GetLastError
以找出原因

一个新的进程被设置为在所有CPU上运行,因此您不需要调用此函数来指定它,除非您的进程是由另一个进程生成的,该进程出于自身的原因想要限制它


在具有64个以上CPU的系统上运行时,还有一些注意事项。

如果您阅读Microsoft文档,您会发现需要指定
1
位才能在该处理器上运行。您正在进行的调用将不允许您的进程在任何CPU上运行,因此这可能会被拒绝。检查
SetProcessAffinityMask
调用的返回值,然后根据需要调用
GetLastError
以找出原因

一个新的进程被设置为在所有CPU上运行,因此您不需要调用此函数来指定它,除非您的进程是由另一个进程生成的,该进程出于自身的原因想要限制它


在具有64个以上CPU的系统上运行时,还有一些注意事项。

如果SetProcessAffinityMask失败,请使用GetLastError检索任何错误代码。您的进程是否产生多个线程?如果是,则可以使用带有线程句柄的SetThreadAffinityMask以特定内核为目标,而不是在SetProcessAffinityMask失败时使用GetLastError检索任何错误代码。您的进程是否产生多个线程?如果是,那么您可以使用带有线程句柄的SetThreadAffinityMask以特定内核为目标