在.NET/C#中获取CPU核心数
确定应用程序可用的CPU核心数对于优化性能至关重要。在.NET/C#中,有多种方法可以提取此信息:
1. Environment.ProcessorCount
此属性提供系统上逻辑处理器的数量。但是,它不区分物理处理器和超线程核心。
<code class="language-C#">Console.WriteLine("逻辑处理器数量: {0}", Environment.ProcessorCount);</code>
2. Win32_Processor
使用WMI(Windows管理规范),您可以访问有关处理器的更多详细信息:
物理处理器:
<code class="language-C#">foreach (var item in new System.Management.ManagementObjectSearcher("Select * from Win32_ComputerSystem").Get()) { Console.WriteLine("物理处理器数量: {0}", item["NumberOfProcessors"]); }</code>
核心数:
<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. 排除的处理器
此外,您可以使用Windows API调用来发现Windows中排除的处理器。以下代码显示逻辑处理器的总数,包括被排除的处理器:
<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>
以上是如何在 .NET/C# 中检索 CPU 核心计数?的详细内容。更多信息请关注PHP中文网其他相关文章!