博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
window命令查看cpu核数_Windows下获取逻辑cpu数量跟cpu核数量
阅读量:5732 次
发布时间:2019-06-18

本文共 1666 字,大约阅读时间需要 5 分钟。

Windows下获取逻辑cpu数量和cpu核数量

代码可在Windows NT下正常运行

具体API说明请参照如下文档:

GetLogicalProcessorInformation

点击打开链接

点击打开链接

点击打开链接

typedef BOOL (WINAPI *LPFN_GLPI)(PSYSTEM_LOGICAL_PROCESSOR_INFORMATION, PDWORD);

DWORD CountSetBits(ULONG_PTR bitMask)

{

DWORD LSHIFT = sizeof(ULONG_PTR)*8 - 1;

DWORD bitSetCount = 0;

ULONG_PTR bitTest = (ULONG_PTR)1 << LSHIFT;

DWORD i;

for (i = 0; i <= LSHIFT; ++i)

{

bitSetCount += ((bitMask & bitTest)?1:0);

bitTest/=2;

}

return bitSetCount;

}

LPFN_GLPI glpi;

glpi = (LPFN_GLPI) GetProcAddress(GetModuleHandle(TEXT("kernel32")),"GetLogicalProcessorInformation");

if (NULL == glpi)

{

printf("GetLogicalProcessorInformation is not supported.\n");

}

BOOL done = FALSE;

PSYSTEM_LOGICAL_PROCESSOR_INFORMATION buffer = NULL;

PSYSTEM_LOGICAL_PROCESSOR_INFORMATION ptr = NULL;

DWORD returnLength = 0;

while (!done)

{

DWORD rc = glpi(buffer, &returnLength);

if (FALSE == rc)

{

if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)

{

if (buffer)

free(buffer);

buffer = (PSYSTEM_LOGICAL_PROCESSOR_INFORMATION)malloc(returnLength);

if (NULL == buffer)

{

printf("Error: Allocation failure\n");

return (2);

}

}

else

{

printf("Error %d\n", GetLastError());

return (3);

}

}

else

{

done = TRUE;

}

}

ptr = buffer;

DWORD byteOffset = 0;

DWORD logicalProcessorCount = 0;

DWORD processorCoreCount = 0;

while (byteOffset + sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION) <= returnLength)

{

switch (ptr->Relationship)

{

case RelationProcessorCore:

processorCoreCount++;

logicalProcessorCount += CountSetBits(ptr->ProcessorMask);

break;

}

byteOffset += sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION);

ptr++;

}

printf("logical:%d core:%d\n", logicalProcessorCount, processorCoreCount);

转载地址:http://ytowx.baihongyu.com/

你可能感兴趣的文章
css 默认不显示 之后显示
查看>>
我的友情链接
查看>>
DNS显性+隐性URL转发原理
查看>>
我的友情链接
查看>>
使用Azure Storage进行静态Web托管
查看>>
网易有道 IP地址、手机号码归属地和身份证 查询接口API
查看>>
XT [2011-06-25]更新到0.41版本
查看>>
鼠标停留在GridView某一行时行的颜色改变
查看>>
【v2.x OGE教程 14】控件使用
查看>>
系列3:WAS Liberty Profile hello mysql jdbc
查看>>
基础知识:python模块的导入
查看>>
Android MVC之我的实现
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
关于批处理-1
查看>>
Tomcat部署Web应用方法总结
查看>>
Python3 django2.0 字段加密 解密 AES
查看>>
CCNA实验之:网络地址转换(NAT)实验
查看>>
计算机网络原理笔记-停止等待协议
查看>>
NET牛人应该知道些什么?
查看>>