关于windows API函数GetSystemInfo获取获取CPU逻辑核数(线程数)不对的问题

[复制链接]
查看11 | 回复6 | 2021-1-27 05:08:47 | 显示全部楼层 |阅读模式
本人之前都是使用GetSystemInfo来获取CPU逻辑核数,环境:win7x64;2个物理CPU;每个CPU都是16个核;
使用GetSystemInfo获取CPU逻辑核数dwNumberOfProcessors=32,是两个物理CPU的总逻辑核数;
现于一台新电脑上,仍使用GetSystemInfo发现,只获取了一个CPU的逻辑核数;新电脑环境:win10x64;2个物理CPU;每个CPU都是48个核;使用GetSystemInfo获取CPU逻辑核数dwNumberOfProcessors=48,是一个物理CPU的逻辑核数;为什么不是96?请大神帮忙解释下,感谢!
另附上GetSystemInfo获取CPU逻辑核数的使用程序:
SYSTEM_INFOsys;
GetSystemInfo(&sys);
intnum=0;
num=sys.dwNumberOfProcessors;
分 -->
回复

使用道具 举报

千问 | 2021-1-27 05:08:47 | 显示全部楼层
猜测是不是这个原因:你的32位程序跑在WOW64上,GetNativeSystemInfo试试
ToretrieveaccurateinformationforanapplicationrunningonWOW64,calltheGetNativeSystemInfofunction.
回复

使用道具 举报

千问 | 2021-1-27 05:08:47 | 显示全部楼层
GetLogicalProcessorInformationEx

回复

使用道具 举报

千问 | 2021-1-27 05:08:47 | 显示全部楼层
引用1楼陈仲甫的回复:猜测是不是这个原因:你的32位程序跑在WOW64上,GetNativeSystemInfo试试
ToretrieveaccurateinformationforanapplicationrunningonWOW64,calltheGetNativeSystemInfofunction.

你好,我的程序是64位的,和系统一样
回复

使用道具 举报

千问 | 2021-1-27 05:08:47 | 显示全部楼层
引用2楼早打大打打核战争的回复:GetLogicalProcessorInformationEx
你好,能具体说一下吗?不太懂这方面的内容
回复

使用道具 举报

千问 | 2021-1-27 05:08:47 | 显示全部楼层
https://stackoverflow.com/questions/41486106/trying-to-get-the-active-cores-confused-with-the-usage-of-getlogicalprocessorinf

回复

使用道具 举报

千问 | 2021-1-27 05:08:47 | 显示全部楼层
std::thread::hardware_concurrency();
这个试试行不行
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行