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
Susan SarandonOriginal
2025-01-18 20:20:17392Durchsuche

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.

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

2. Win32_Prozessor

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

Physischer Prozessor:

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

Anzahl der Kerne:

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

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

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!

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