Heim > Backend-Entwicklung > C++ > Wie kann ich die CPU-Kernanzahl in .NET/C# abrufen?

Wie kann ich die CPU-Kernanzahl in .NET/C# abrufen?

Susan Sarandon
Freigeben: 2025-01-18 20:20:17
Original
415 Leute haben es durchsucht

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

Ermitteln Sie die Anzahl der CPU-Kerne in .NET/C#

Die Bestimmung der Anzahl der für Ihre Anwendung verfügbaren CPU-Kerne ist für die Optimierung der Leistung von entscheidender Bedeutung. In .NET/C# gibt es mehrere Möglichkeiten, diese Informationen zu extrahieren:

1. Environment.ProcessorCount

Diese Eigenschaft gibt die Anzahl der logischen Prozessoren im System an. Es wird jedoch nicht zwischen physischen Prozessoren und Hyper-Threaded-Kernen unterschieden.

Console.WriteLine("逻辑处理器数量: {0}", Environment.ProcessorCount);
Nach dem Login kopieren

2. Win32_Prozessor

Mithilfe von WMI (Windows Management Instrumentation) können Sie auf detailliertere Informationen zum Prozessor zugreifen:

Physischer Prozessor:

foreach (var item in new System.Management.ManagementObjectSearcher("Select * from Win32_ComputerSystem").Get())
{
    Console.WriteLine("物理处理器数量: {0}", item["NumberOfProcessors"]);
}
Nach dem Login kopieren

Anzahl der Kerne:

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);
Nach dem Login kopieren

3. Ausgeschlossene Prozessoren

Darüber hinaus können Sie Windows-API-Aufrufe verwenden, um ausgeschlossene Prozessoren in Windows zu ermitteln. Der folgende Code zeigt die Gesamtzahl der logischen Prozessoren an, einschließlich ausgeschlossener Prozessoren:

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);
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich die CPU-Kernanzahl in .NET/C# abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage