首页 > 后端开发 > C++ > 如何在 .NET/C# 中检索 CPU 核心计数?

如何在 .NET/C# 中检索 CPU 核心计数?

Susan Sarandon
发布: 2025-01-18 20:20:17
原创
389 人浏览过

How Can I Retrieve the CPU Core Count in .NET/C#?

在.NET/C#中获取CPU核心数

确定应用程序可用的CPU核心数对于优化性能至关重要。在.NET/C#中,有多种方法可以提取此信息:

1. Environment.ProcessorCount

此属性提供系统上逻辑处理器的数量。但是,它不区分物理处理器和超线程核心。

<code class="language-C#">Console.WriteLine("逻辑处理器数量: {0}", Environment.ProcessorCount);</code>
登录后复制

2. Win32_Processor

使用WMI(Windows管理规范),您可以访问有关处理器的更多详细信息:

物理处理器:

<code class="language-C#">foreach (var item in new System.Management.ManagementObjectSearcher("Select * from Win32_ComputerSystem").Get())
{
    Console.WriteLine("物理处理器数量: {0}", item["NumberOfProcessors"]);
}</code>
登录后复制

核心数:

<code class="language-C#">int coreCount = 0;
foreach (var item in new System.Management.ManagementObjectSearcher("Select * from Win32_Processor").Get())
{
    coreCount += int.Parse(item["NumberOfCores"].ToString());
}
Console.WriteLine("核心数量: {0}", coreCount);</code>
登录后复制

3. 排除的处理器

此外,您可以使用Windows API调用来发现Windows中排除的处理器。以下代码显示逻辑处理器的总数,包括被排除的处理器:

<code class="language-C#">int deviceCount = 0;
IntPtr deviceList = IntPtr.Zero;
Guid processorGuid = new Guid("{50127dc3-0f36-415e-a6cc-4cb3be910b65}");

try
{
    deviceList = SetupDiGetClassDevs(ref processorGuid, "ACPI", IntPtr.Zero, (int)DIGCF.PRESENT);
    for (int deviceNumber = 0; ; deviceNumber++)
    {
        SP_DEVINFO_DATA deviceInfo = new SP_DEVINFO_DATA();
        deviceInfo.cbSize = Marshal.SizeOf(deviceInfo);
        if (!SetupDiEnumDeviceInfo(deviceList, deviceNumber, ref deviceInfo))
        {
            deviceCount = deviceNumber;
            break;
        }
    }
}
finally
{
    if (deviceList != IntPtr.Zero) { SetupDiDestroyDeviceInfoList(deviceList); }
}
Console.WriteLine("核心数量: {0}", deviceCount);</code>
登录后复制

以上是如何在 .NET/C# 中检索 CPU 核心计数?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板