在 Windows 平台上使用非托管 C++,是否有一种简单的方法来检测我的主机拥有的处理器内核数量?
问问题
9853 次
4 回答
12
您可以使用GetLogicalProcessorInformation来获取您需要的信息。
预计到达时间:
正如评论者链接到的问题中所述,另一种(更简单)的方法是通过GetSystemInfo:
SYSTEM_INFO sysinfo;
GetSystemInfo( &sysinfo );
numCPU = sysinfo.dwNumberOfProcessors;
似乎 GetLogicalProcessorInformation 会给你更详细的信息,但如果你只需要处理器的数量,GetSystemInfo 可能就可以了。
于 2009-05-18T14:05:45.077 回答
2
我注意到NUMBER_OF_PROCESSORS
XP 上有一个环境变量,但我在 Microsoft 的网站上找不到它。不过,我相信这将是最简单的方法。
于 2009-05-18T14:20:32.943 回答
0
于 2009-05-18T14:08:06.413 回答
0
size_t getProcessorCores()
{
DWORD process, system;
if(GetProcessAffinityMask(GetCurrentProcess(), &process, &system))
{
int count = 0;
for(int i = 0; i < 32; i++)
if(system & (1 << i))
count++;
return count;
}
// may be we hav't PROCESS_QUERY_INFORMATION access right
SYSTEM_INFO sysinfo;
GetSystemInfo( &sysinfo );
return sysinfo.dwNumberOfProcessors;
}
size_t getAvailableProcessorCores()
{
DWORD process, system;
if(GetProcessAffinityMask(GetCurrentProcess(), &process, &system))
{
int count = 0;
for(int i = 0; i < 32; i++)
if(process & (1 << i))
count++;
return count;
}
// may be we hav't PROCESS_QUERY_INFORMATION access right
SYSTEM_INFO sysinfo;
GetSystemInfo( &sysinfo );
return sysinfo.dwNumberOfProcessors;
}
于 2013-06-07T10:16:01.887 回答