以编程方式设置应用程序的处理器关联性

时间:2015-12-11 05:53:47

标签: c++ windows bitwise-operators dcom

我们有一个C ++ COM服务器应用程序,用户可以从中选择并启动自己的进程。我想添加'处理器亲和性集'启动器应用程序中的功能。

客户有一个多CPU系统(2个物理CPU)。用户将提供物理CPU编号,1或2.应用程序启动器需要根据用户的输入设置其应用程序的处理器关联。如果他们将CPU编号设为2,则从启动器启动的应用程序应使用CPU 2。

如何计算处理器关联掩码(基于CPU)?

此启动器应用程序应在Windows XP 32位和Windows7 64位计算机上运行。此外,处理器类型可能因机器而异(英特尔,AMD或其他)。

该应用程序是作为COM服务器(C ++)开发的。

请给我一个很好的解决方案。

1 个答案:

答案 0 :(得分:1)

不确定您的问题是想获取CPU数量还是设置

//To get the CPU
HANDLE hProcess = GetCurrentProcess();
SYSTEM_INFO SystemInfo;
GetSystemInfo(&SystemInfo);
unsigned int nMaxProcessorMask = (1 << SystemInfo.dwNumberOfProcessors) - 1;
// Set the max processor mask
SetProcessAffinityMask(hProcess, nMaxProcessorMask);