vs2008中如何通过API查询当前CPU是几核的?

lfyos 2010-06-03 06:44:33
vs2008中如何通过API查询当前CPU是几核的?
谢谢
...全文
149 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lfyos 2010-06-06
  • 打赏
  • 举报
回复
太牛了!
在vs2008中使用汇编语言,利用指令cpuid。
budweiser 2010-06-03
  • 打赏
  • 举报
回复
vs2008 只是一个IDE而已, 要查询当前CPU是几核的话, 下面几种方法楼主可以参考


#1
多核cup上跑的程序,有没有windows的api或者别的什么方法能返回运行当前线程的cpu核的?
omp的库函数里有也可以
--------------------

#2
看看这几个函数吧:

setprocessaffinitymask / getprocessaffinitymask

getprocessgroupaffinity / getthreadgroupaffinity
--------------------

#3
引用 1 楼 coding_hello 的回复:
看看这几个函数吧: setprocessaffinitymask / getprocessaffinitymask getprocessgroupaffinity / getthreadgroupaffinity


这几个知道,可是不是我想要的哇~~
--------------------

#4
自己在别处找到了一个方法,自己写个函数可以做到:


//
// getcurrentprocessornumber.cpp
//
// an xp version of getcurrentprocessornumber()
//
// 14/11/07 first version
//

#include "stdafx.h"

#define nthreads 8

//
// getcurrentprocessornumberxp
//

dword getcurrentprocessornumberxp(void)
{
_asm {mov eax, 1}
_asm {cpuid}
_asm {shr ebx, 24}
_asm {mov eax, ebx}
}

//
// thread procedure
//
dword winapi threadproc(lpvoid p)
{
printf("thread %d: logical cpu %d ", (int) p, getcurrentprocessornumberxp());

clock_t t = clock() + 100; // consume 100ms ...
while (clock() < t) // of cpu time

return 0;
}

//
// _tmain
//
int _tmain(int argc, _tchar* argv[])
{
for (int i = 0; i < nthreads; i++)
createthread(null, 0, threadproc, (lpvoid) i, 0, null);

_getch(); // stop console window disappearing prematurely
return 0;

}
lfyos 2010-06-03
  • 打赏
  • 举报
回复
没有人知道吗?

567

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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