怎样获取机器的CPU核心数量?

饶鹏 2009-06-30 11:30:22
可以并行处理的程序,工作线程数量和核心数相等时效率应该是最高的吧?可我不知道怎么获取核心数。
GetSystemInfo()好像只能获取CPU数。
...全文
1380 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
晨星 2010-03-18
  • 打赏
  • 举报
回复
到MSDN中查一查GetSystemInfo就全明白了。示例代码如下:
#include <stdio.h>
#include <windows.h>

int main() {
SYSTEM_INFO info;
GetSystemInfo(&info);
printf("Number of processors: %d.\n", info.dwNumberOfProcessors);
return 0;
}
lkhoji 2010-03-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 steedhorse 的回复:]
在我的系统中,(XP + VS2005),调用GetSystemInfo,返回的dwNumberOfProcessors就是core的数目,而是物理芯片的数目。
[/Quote]
我是菜鸟,不能一点即会,能给出具体代码吗?
晨星 2009-06-30
  • 打赏
  • 举报
回复
Windows“任务管理器”中的“性能”页面也是针对每个core画一条曲线,道理应该是类似的。
晨星 2009-06-30
  • 打赏
  • 举报
回复
可能是因为从逻辑意义上讲,核心数才更有意义。光看物理芯片的个数来确定并行能力并不确切。
饶鹏 2009-06-30
  • 打赏
  • 举报
回复
居然真的如此。
难道MS的意思是,对编程者来说CPU个数根本不重要,只要知道核心个数就行了?
晨星 2009-06-30
  • 打赏
  • 举报
回复
汗,少打了一个重要的字。“而不是物理芯片的数目。”
晨星 2009-06-30
  • 打赏
  • 举报
回复
在我的系统中,(XP + VS2005),调用GetSystemInfo,返回的dwNumberOfProcessors就是core的数目,而是物理芯片的数目。

2,643

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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