以编程方式设置应用程序的处理器相关性
Programmatically set the Processor Affinity for an Application
我们有一个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);
相关文章:
- #定义c-预处理器常量..我做错了什么
- 预处理器:插入结构名称中的前一个行号
- 如何在c++中实现处理器调度模拟器
- C/C++预处理器是否可以检测一些编译器选项
- 要与"if constexpr"一起使用的编译时消息(在预处理器之后)
- 在clang++预处理器中确定gcc工具链版本
- 不同/较旧的处理器运行c++代码的方式是否不同
- 用于交叉编译和CMake的预处理器宏的单元测试
- 有没有办法在从编译器获取参数时避免预处理器宏?
- 如何比较两个同名的预处理器宏?
- 从预处理器获取 Windows 版本(C++ Win32)
- 如何摆脱为条件编译定义预处理器宏的需要?
- C 预处理器 - 现有定义的预置路径
- VS2015 预处理器定义与点
- 不带预处理器的调用方法/文件的文件名/行号
- 获取文件数据预处理器宏
- 获取处理器相关性(linux)时出现问题
- 对测试单元使用预处理器指令的相关性
- 以编程方式设置应用程序的处理器相关性
- 设置处理器与将在 Linux 上运行的C++的相关性