首頁 > 後端開發 > C++ > 如何在 .NET/C# 中檢索 CPU 核心計數?

如何在 .NET/C# 中檢索 CPU 核心計數?

Susan Sarandon
發布: 2025-01-18 20:20:17
原創
403 人瀏覽過

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

在.NET/C#中取得CPU核心數

確定應用程式可用的CPU核心數對於最佳化效能至關重要。在.NET/C#中,有多種方法可以提取此資訊:

1. Environment.ProcessorCount

此屬性提供系統上邏輯處理器的數量。但是,它不區分物理處理器和超線程核心。

Console.WriteLine("逻辑处理器数量: {0}", Environment.ProcessorCount);
登入後複製

2. Win32_Processor

使用WMI(Windows管理規範),您可以存取有關處理器的更多詳細資訊:

實體處理器:

foreach (var item in new System.Management.ManagementObjectSearcher("Select * from Win32_ComputerSystem").Get())
{
    Console.WriteLine("物理处理器数量: {0}", item["NumberOfProcessors"]);
}
登入後複製

核心數:

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);
登入後複製

3. 排除的處理器

此外,您可以使用Windows API呼叫來發現Windows中排除的處理器。以下程式碼顯示邏輯處理器的總數,包括被排除的處理器:

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);
登入後複製

以上是如何在 .NET/C# 中檢索 CPU 核心計數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板