使用 .NET/C# 擷取 CPU 核心計數
.NET/C# 提供了多種方法來識別系統上可用的 CPU 核心數量。 以下是一些方法:
1。實體處理器:
此方法計算安裝的實體處理器的數量。
<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。每個處理器的核心數:
此方法對所有處理器的核心數量進行求和。
<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。邏輯處理器:
這直接存取邏輯處理器的總數(包括超執行緒)。
<code class="language-csharp">Console.WriteLine($"Number of Logical Processors: {Environment.ProcessorCount}");</code>
4。處理器(不含 Windows 隱藏的處理器):
此方法考慮了可能被排除在標準 Windows 報告之外的處理器。 它需要使用設定 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>
重要注意事項:
System.Management.dll
的參考。 以上是如何在.NET/C#中取得CPU核心數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!