C++获取多路CPU信息

LL596214569 2019-12-02 10:34:13
C++如何获取当前电脑的CPU信息?包括CPU个数、线程数、内核数等等;
我试过
SYSTEM_INFO SysInfo;
GetSystemInfo(&SysInfo);
没法获取多路CPU下的正确信息,只能取到一个CPU的,还有下面这份代码,也没法获取多路CPU的信息,

那么该如何取得多路CPU信息呢?不同平台下都该用什么接口?
...全文
276 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgl7903 2019-12-03
  • 打赏
  • 举报
回复
MSDN说明例子中有一段 参考下, 留意NumberOfProcessors, 还有后面的是循环枚举,那它的循环次数可能就是处理器数量 Wscript.Echo "Processors" Set colCompSys = objWMIService.ExecQuery("Select * from Win32_ComputerSystem") For Each objCS in colCompSys WScript.Echo " NumberOfProcessors: " & objCS.NumberOfProcessors WScript.Echo " NumberOfLogicalProcessors: " & objCS.NumberOfLogicalProcessors WScript.Echo " PCSystemType: " & objCS.PCSystemType Next Set colProcessors = objWMIService.ExecQuery("Select * from Win32_Processor") For Each objProcessor in colProcessors WScript.Echo " Manufacturer: " & objProcessor.Manufacturer WScript.Echo " Name: " & objProcessor.Name WScript.Echo " Description: " & objProcessor.Description WScript.Echo " ProcessorID: " & objProcessor.ProcessorID WScript.Echo " Architecture: " & objProcessor.Architecture WScript.Echo " AddressWidth: " & objProcessor.AddressWidth WScript.Echo " NumberOfCores: " & objProcessor.NumberOfCores WScript.Echo " DataWidth: " & objProcessor.DataWidth WScript.Echo " Family: " & objProcessor.Family WScript.Echo " MaximumClockSpeed: " & objProcessor.MaxClockSpeed Next
LL596214569 2019-12-03
  • 打赏
  • 举报
回复
引用 10 楼 zgl7903 的回复:
NumberOfLogicalProcessors ?
Number of logical processors for the current instance of the processor 这个意思不是读的单个CPU吗。。。。
zgl7903 2019-12-03
  • 打赏
  • 举报
回复
NumberOfLogicalProcessors ?
LL596214569 2019-12-03
  • 打赏
  • 举报
回复
引用 3 楼 zgl7903 的回复:
WMI Win32_Processor
NumberOfCores Data type: uint32 Access type: Read-only Qualifiers: MappingStrings ("WMI") Number of cores for the current instance of the processor. A core is a physical processor on the integrated circuit. For example, in a dual-core processor this property has a value of 2. For more information, see Remarks. 这个的意思是读取当前处理器的信息吧,应该不是多个处理器的信息吧
LL596214569 2019-12-03
  • 打赏
  • 举报
回复
引用 6 楼 tiger波波 的回复:
https://blog.csdn.net/farmwang/article/details/80658662 https://www.0xaa55.com/thread-1355-1-1.html
https://docs.microsoft.com/en-us/windows/win32/api/winternl/nf-winternl-ntquerysysteminformation
LL596214569 2019-12-03
  • 打赏
  • 举报
回复
引用 6 楼 tiger波波 的回复:
https://blog.csdn.net/farmwang/article/details/80658662 https://www.0xaa55.com/thread-1355-1-1.html
[NtQuerySystemInformation may be altered or unavailable in future versions of Windows. 并且 The NumberOfProcessors member contains the number of processors present in the system. Use GetSystemInfo instead to retrieve this information. 微软建议用 GetSystemInfo 来替代它获取 NumberOfProcessors ,而 GetSystemInfo 实测无法读取多路CPU的信息。
LL596214569 2019-12-03
  • 打赏
  • 举报
回复
引用 12 楼 zgl7903 的回复:
MSDN说明例子中有一段 参考下, 留意NumberOfProcessors, 还有后面的是循环枚举,那它的循环次数可能就是处理器数量 Wscript.Echo "Processors" Set colCompSys = objWMIService.ExecQuery("Select * from Win32_ComputerSystem") For Each objCS in colCompSys WScript.Echo " NumberOfProcessors: " & objCS.NumberOfProcessors WScript.Echo " NumberOfLogicalProcessors: " & objCS.NumberOfLogicalProcessors WScript.Echo " PCSystemType: " & objCS.PCSystemType Next Set colProcessors = objWMIService.ExecQuery("Select * from Win32_Processor") For Each objProcessor in colProcessors WScript.Echo " Manufacturer: " & objProcessor.Manufacturer WScript.Echo " Name: " & objProcessor.Name WScript.Echo " Description: " & objProcessor.Description WScript.Echo " ProcessorID: " & objProcessor.ProcessorID WScript.Echo " Architecture: " & objProcessor.Architecture WScript.Echo " AddressWidth: " & objProcessor.AddressWidth WScript.Echo " NumberOfCores: " & objProcessor.NumberOfCores WScript.Echo " DataWidth: " & objProcessor.DataWidth WScript.Echo " Family: " & objProcessor.Family WScript.Echo " MaximumClockSpeed: " & objProcessor.MaxClockSpeed Next
这个例子是VB写的,大概意思我能动,但是这个转换成C++。。。。enmmmm 感觉是需要这个 objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 大佬你能翻译一下吗。。。。
LL596214569 2019-12-02
  • 打赏
  • 举报
回复
引用 2 楼 tiger波波 的回复:
CPU一般只有一个吧,多核多线程
你发的链接里的代码和我图上的是一样的,这个在单CPU下好用,多CPU不好用; 多路CPU是指一个主板上插了多个CPU,不是多核;
zgl7903 2019-12-02
  • 打赏
  • 举报
回复
tiger波波 2019-12-02
  • 打赏
  • 举报
回复
CPU一般只有一个吧,多核多线程
tiger波波 2019-12-02
  • 打赏
  • 举报
回复
亲测可用 https://blog.csdn.net/chenlycly/article/details/84991596
tiger波波 2019-12-02
  • 打赏
  • 举报
回复
https://blog.csdn.net/farmwang/article/details/80658662 https://www.0xaa55.com/thread-1355-1-1.html
tiger波波 2019-12-02
  • 打赏
  • 举报
回复
引用 4 楼 LL596214569 的回复:
[quote=引用 2 楼 tiger波波 的回复:] CPU一般只有一个吧,多核多线程
你发的链接里的代码和我图上的是一样的,这个在单CPU下好用,多CPU不好用; 多路CPU是指一个主板上插了多个CPU,不是多核;[/quote] https://blog.csdn.net/blaider/article/details/8456367

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧