2017-07-31 17 views
0

我想设置进程以使用所有处理器。我试过C++ SetProcessAffinityMask使用所有处理器

SetProcessAffinityMask(GetCurrentProcess(), 0); 

但它没有设置到所有的处理器。

+0

如果SetProcessAffinityMask失败,则使用GetLastError检索任何错误代码。你的程序产生多个线程吗?如果是,那么你可以使用SetThreadAffinityMask和一个线程句柄来定位一个特定的核心,而不是使用 – Asesh

回答

1

如果您阅读了关于SetProcessAffinityMask的Microsoft文档,您会发现需要指定1位才能在该处理器上运行。您所做的调用不会让您的进程在任何CPU上运行,因此可能会被拒绝。检查您的SetProcessAffinityMask呼叫的返回值,如有必要请致电GetLastError以查明原因。

将一个新进程设置为在所有CPU上运行,因此您不需要调用此函数来指定该进程,除非您的进程由另一个因其自身原因而想要限制的进程产生。

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

+0

wops,愚蠢的是,我会删除评论。 –