我们有一个C ++ COM服务器应用程序,用户可以从中选择并启动自己的进程。我想添加'处理器亲和性集'启动器应用程序中的功能。
客户有一个多CPU系统(2个物理CPU)。用户将提供物理CPU编号,1或2.应用程序启动器需要根据用户的输入设置其应用程序的处理器关联。如果他们将CPU编号设为2,则从启动器启动的应用程序应使用CPU 2。
如何计算处理器关联掩码(基于CPU)?
此启动器应用程序应在Windows XP 32位和Windows7 64位计算机上运行。此外,处理器类型可能因机器而异(英特尔,AMD或其他)。
该应用程序是作为COM服务器(C ++)开发的。
请给我一个很好的解决方案。
答案 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);