Heim >Backend-Entwicklung >C++ >Wie erhalte ich die Anzahl der CPU-Kerne in .NET/C#?

Wie erhalte ich die Anzahl der CPU-Kerne in .NET/C#?

Barbara Streisand
Barbara StreisandOriginal
2025-01-18 19:51:10968Durchsuche

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

CPU-Kernanzahl mit .NET/C# abrufen

.NET/C# bietet mehrere Methoden zum Identifizieren der Anzahl der auf einem System verfügbaren CPU-Kerne. Hier sind ein paar Ansätze:

1. Physische Prozessoren:

Diese Methode zählt die Anzahl der installierten physischen Prozessoren.

<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. Kerne pro Prozessor:

Dieser Ansatz summiert die Kernanzahl aller Prozessoren.

<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. Logische Prozessoren:

Dadurch wird direkt auf die Gesamtzahl der logischen Prozessoren zugegriffen (einschließlich Hyperthreading).

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

4. Prozessoren (mit Ausnahme derjenigen, die von Windows ausgeblendet werden):

Diese Methode berücksichtigt Prozessoren, die möglicherweise von der Standard-Windows-Berichterstellung ausgeschlossen sind. Es erfordert die Verwendung der Setup-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>

Wichtige Überlegungen:

  • System.Management.dll: Denken Sie daran, in Ihrem Projekt einen Verweis auf System.Management.dll hinzuzufügen.
  • Systemaktualisierungen: Für genaue Ergebnisse auf einigen Systemen können vollständige Systemaktualisierungen (Hotfixes und Service Packs) erforderlich sein. Die Verfügbarkeit detaillierter Prozessorinformationen hängt von der Konfiguration und den Updates des Systems ab.

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

Stellungnahme:
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