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

Programmatically set the Processor Affinity for an Application

本文关键字:处理器 相关性 应用程序 设置 编程 方式      更新时间:2023-10-16

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

客户有一个多CPU系统(2个物理CPU)。用户将给出物理CPU编号,1或2。应用程序启动器需要根据用户的输入为其应用程序设置处理器相关性。如果他们给出CPU编号为2,那么从启动器启动的应用程序应该使用CPU 2。

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

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

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

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

不确定您的问题是想获得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);