使用 .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中文网其他相关文章!