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

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

Barbara Streisand
发布: 2025-01-18 19:51:10
原创
966 人浏览过

How to Get the Number of CPU Cores in .NET/C#?

使用 .NET/C# 检索 CPU 核心计数

.NET/C# 提供了多种方法来识别系统上可用的 CPU 核心数量。 以下是一些方法:

1。物理处理器:

此方法计算安装的物理处理器的数量。

<code class="language-csharp">foreach (var item in new System.Management.ManagementObjectSearcher("Select * from Win32_ComputerSystem").Get())
{
    Console.WriteLine($"Number of Physical Processors: {item["NumberOfProcessors"]}");
}</code>
登录后复制

2。每个处理器的核心数:

此方法对所有处理器的核心数量进行求和。

<code class="language-csharp">int totalCores = 0;
foreach (var item in new System.Management.ManagementObjectSearcher("Select * from Win32_Processor").Get())
{
    totalCores += int.Parse(item["NumberOfCores"].ToString());
}
Console.WriteLine($"Total Number of Cores: {totalCores}");</code>
登录后复制

3。逻辑处理器:

这直接访问逻辑处理器的总数(包括超线程)。

<code class="language-csharp">Console.WriteLine($"Number of Logical Processors: {Environment.ProcessorCount}");</code>
登录后复制

4。处理器(不包括 Windows 隐藏的处理器):

此方法考虑了可能被排除在标准 Windows 报告之外的处理器。 它需要使用设置 API。

<code class="language-csharp">int processorCount = 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))
        {
            processorCount = deviceNumber;
            break;
        }
    }
}
finally
{
    if (deviceList != IntPtr.Zero) { SetupDiDestroyDeviceInfoList(deviceList); }
}
Console.WriteLine($"Number of Cores (including hidden): {processorCount}");</code>
登录后复制

重要注意事项:

  • System.Management.dll: 请记住在您的项目中添加对 System.Management.dll 的引用。
  • 系统更新:为了在某些系统上获得准确的结果,可能需要完整的系统更新(修补程序和服务包)。 详细处理器信息的可用性取决于系统的配置和更新。

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

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