Heim >Backend-Entwicklung >C++ >Wie kann ich die CPU-Kernanzahl in .NET/C# abrufen?
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!