请问如何查看有几个CPU

jamseyang 2013-05-01 08:03:58
通过任务管理器查看有4个CPU

执行systeminfo命令显示有1个处理器

1、请问大家怎么才能查看到底有多少个CPU呢?
2、双核就是有两个CPU吗,一个处理器就是一个CPU吗?
谢谢大家!
...全文
440 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
youyou1912 2013-05-02
  • 打赏
  • 举报
回复
systeminfo: 1个, 确定你只有1颗物理CPU 任务栏: 4个, 你应该是有4个逻辑单元. (也就是线程可并行调度单元) 上面运行调用GetLogicalProcessorInformation的工具: 2个, 我怀疑是程序错误. 理论应该也是4个(和任务栏一样)
sololie 2013-05-01
  • 打赏
  • 举报
回复
检测出的俺的老爷CPU Availability= Caption=Intel(R) Core(TM)2 Duo CPU E7400 @ 2.80GHz ClassGuid={50127DC3-0F36-415E-A6CC-4CB3BE910B65} ConfigManagerErrorCode=0 ConfigManagerUserConfig=False CreationClassName=Win32_PnPEntity Description=Intel Processor DeviceID=ACPI\GENUINEINTEL_-_X86_FAMILY_6_MODEL_23\_0 ErrorCleared= ErrorDescription= InstallDate= LastErrorCode= Manufacturer=Intel Name=Intel(R) Core(TM)2 Duo CPU E7400 @ 2.80GHz PNPDeviceID=ACPI\GENUINEINTEL_-_X86_FAMILY_6_MODEL_23\_0 PowerManagementCapabilities= PowerManagementSupported= Service=intelppm Status=OK StatusInfo= SystemCreationClassName=Win32_ComputerSystem SystemName=马赛克
sololie 2013-05-01
  • 打赏
  • 举报
回复
WMI: Windows Management Instrumentation (Windows 管理工具) 通过 WMI 可以获取主板、BIOS、磁盘、显卡、网络等几乎所有的系统信息。 利用这个工具可以管理本地或客户端系统中几乎所有的信息。 很多网络管理工具都是基于WMI开发的。在 Windows NT/2000/XP/2003 都有这个工具, 在 Windows 98 里面可以选择安装这个工具。 源码 http://www.cppfans.com/for_download/f_cpp_source/wmi_bcb.rar 出处 http://www.cppfans.com/articles/system/bcb_wmi.asp
a784063999 2013-05-01
  • 打赏
  • 举报
回复
CPU和線程和內核是不同的
a784063999 2013-05-01
  • 打赏
  • 举报
回复
引用 7 楼 jamseyang 的回复:
[quote=引用 6 楼 a784063999 的回复:] 我想你的CPU是雙核四線程
呵呵,谢谢回复,只是你想的吗,为什么不能肯定呢?[/quote] 這純猜測
jamseyang 2013-05-01
  • 打赏
  • 举报
回复
引用 6 楼 a784063999 的回复:
我想你的CPU是雙核四線程
呵呵,谢谢回复,只是你想的吗,为什么不能肯定呢?
a784063999 2013-05-01
  • 打赏
  • 举报
回复
我想你的CPU是雙核四線程
jamseyang 2013-05-01
  • 打赏
  • 举报
回复
谢谢Jeffery-J兄弟的回复,不过我觉得获取CPU个数应该和线程数没有关系吧
china_jeffery 2013-05-01
  • 打赏
  • 举报
回复
引用 3 楼 jamseyang 的回复:

#include <windows.h>
#include <malloc.h>    
#include <stdio.h>
#include <tchar.h>

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

int _cdecl _tmain ()
{
    BOOL done;
    BOOL rc;
    DWORD returnLength;
    DWORD procCoreCount;
    DWORD byteOffset;
    PSYSTEM_LOGICAL_PROCESSOR_INFORMATION buffer, ptr;
    LPFN_GLPI Glpi;

    Glpi = (LPFN_GLPI) GetProcAddress(
                            GetModuleHandle(TEXT("kernel32")),
                            "GetLogicalProcessorInformation");
    if (NULL == Glpi) 
    {
        _tprintf(
          TEXT("GetLogicalProcessorInformation is not supported.\n"));
        return (1);
    }

    done = FALSE;
    buffer = NULL;
    returnLength = 0;

    while (!done) 
    {
        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) 
                {
                    _tprintf(TEXT("Allocation failure\n"));
                    return (2);
                }
            } 
            else 
            {
                _tprintf(TEXT("Error %d\n"), GetLastError());
                return (3);
            }
        } 
        else done = TRUE;
    }

    procCoreCount = 0;
    byteOffset = 0;

    ptr=buffer;
    while (byteOffset < returnLength) 
    {
        switch (ptr->Relationship) 
        {
            case RelationProcessorCore:
                procCoreCount++;
                break;

            default:
                break;
        }
        byteOffset += sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION);
        ptr++;
    }

    _tprintf(TEXT("Number of active processor cores: %d\n"), 
             procCoreCount);
    free (buffer);

    return 0;
}

上面的代码打印结果是Number of active processor cores: 2 但是systeminfo命令显示是一个处理器 任务管理器显示是4个CPU 我到底要相信哪个呢,求指教!
可能是双核4线程
jamseyang 2013-05-01
  • 打赏
  • 举报
回复

#include <windows.h>
#include <malloc.h>    
#include <stdio.h>
#include <tchar.h>

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

int _cdecl _tmain ()
{
    BOOL done;
    BOOL rc;
    DWORD returnLength;
    DWORD procCoreCount;
    DWORD byteOffset;
    PSYSTEM_LOGICAL_PROCESSOR_INFORMATION buffer, ptr;
    LPFN_GLPI Glpi;

    Glpi = (LPFN_GLPI) GetProcAddress(
                            GetModuleHandle(TEXT("kernel32")),
                            "GetLogicalProcessorInformation");
    if (NULL == Glpi) 
    {
        _tprintf(
          TEXT("GetLogicalProcessorInformation is not supported.\n"));
        return (1);
    }

    done = FALSE;
    buffer = NULL;
    returnLength = 0;

    while (!done) 
    {
        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) 
                {
                    _tprintf(TEXT("Allocation failure\n"));
                    return (2);
                }
            } 
            else 
            {
                _tprintf(TEXT("Error %d\n"), GetLastError());
                return (3);
            }
        } 
        else done = TRUE;
    }

    procCoreCount = 0;
    byteOffset = 0;

    ptr=buffer;
    while (byteOffset < returnLength) 
    {
        switch (ptr->Relationship) 
        {
            case RelationProcessorCore:
                procCoreCount++;
                break;

            default:
                break;
        }
        byteOffset += sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION);
        ptr++;
    }

    _tprintf(TEXT("Number of active processor cores: %d\n"), 
             procCoreCount);
    free (buffer);

    return 0;
}

上面的代码打印结果是Number of active processor cores: 2 但是systeminfo命令显示是一个处理器 任务管理器显示是4个CPU 我到底要相信哪个呢,求指教!
jamseyang 2013-05-01
  • 打赏
  • 举报
回复
引用 1 楼 hiroyukki 的回复:
#include <windows.h>
#include <malloc.h>    
#include <stdio.h>
#include <tchar.h>

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

int _cdecl _tmain ()
{
    BOOL done;
    BOOL rc;
    DWORD returnLength;
    DWORD procCoreCount;
    DWORD byteOffset;
    PSYSTEM_LOGICAL_PROCESSOR_INFORMATION buffer, ptr;
    LPFN_GLPI Glpi;

    Glpi = (LPFN_GLPI) GetProcAddress(
                            GetModuleHandle(TEXT("kernel32")),
                            "GetLogicalProcessorInformation");
    if (NULL == Glpi) 
    {
        _tprintf(
          TEXT("GetLogicalProcessorInformation is not supported.\n"));
        return (1);
    }

    done = FALSE;
    buffer = NULL;
    returnLength = 0;

    while (!done) 
    {
        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) 
                {
                    _tprintf(TEXT("Allocation failure\n"));
                    return (2);
                }
            } 
            else 
            {
                _tprintf(TEXT("Error %d\n"), GetLastError());
                return (3);
            }
        } 
        else done = TRUE;
    }

    procCoreCount = 0;
    byteOffset = 0;

    ptr=buffer;
    while (byteOffset < returnLength) 
    {
        switch (ptr->Relationship) 
        {
            case RelationProcessorCore:
                procCoreCount++;
                break;

            default:
                break;
        }
        byteOffset += sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION);
        ptr++;
    }

    _tprintf(TEXT("Number of active processor cores: %d\n"), 
             procCoreCount);
    free (buffer);

    return 0;
}
以上代码来自MSDN
感谢您的回复,请问能再回答下我提的问题吗,谢谢!
贪食蛇男 2013-05-01
  • 打赏
  • 举报
回复
#include <windows.h>
#include <malloc.h>    
#include <stdio.h>
#include <tchar.h>

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

int _cdecl _tmain ()
{
    BOOL done;
    BOOL rc;
    DWORD returnLength;
    DWORD procCoreCount;
    DWORD byteOffset;
    PSYSTEM_LOGICAL_PROCESSOR_INFORMATION buffer, ptr;
    LPFN_GLPI Glpi;

    Glpi = (LPFN_GLPI) GetProcAddress(
                            GetModuleHandle(TEXT("kernel32")),
                            "GetLogicalProcessorInformation");
    if (NULL == Glpi) 
    {
        _tprintf(
          TEXT("GetLogicalProcessorInformation is not supported.\n"));
        return (1);
    }

    done = FALSE;
    buffer = NULL;
    returnLength = 0;

    while (!done) 
    {
        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) 
                {
                    _tprintf(TEXT("Allocation failure\n"));
                    return (2);
                }
            } 
            else 
            {
                _tprintf(TEXT("Error %d\n"), GetLastError());
                return (3);
            }
        } 
        else done = TRUE;
    }

    procCoreCount = 0;
    byteOffset = 0;

    ptr=buffer;
    while (byteOffset < returnLength) 
    {
        switch (ptr->Relationship) 
        {
            case RelationProcessorCore:
                procCoreCount++;
                break;

            default:
                break;
        }
        byteOffset += sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION);
        ptr++;
    }

    _tprintf(TEXT("Number of active processor cores: %d\n"), 
             procCoreCount);
    free (buffer);

    return 0;
}
以上代码来自MSDN

15,471

社区成员

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

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