
使用 .NET/C# 检索 CPU 核心计数
.NET/C# 提供了多种方法来识别系统上可用的 CPU 核心数量。 以下是一些方法:
1。物理处理器:
此方法计算安装的物理处理器的数量。
1 2 3 4 | foreach ( var item in new System.Management.ManagementObjectSearcher( "Select * from Win32_ComputerSystem" ).Get())
{
Console.WriteLine($ "Number of Physical Processors: {item[" NumberOfProcessors "]}" );
}
|
登录后复制
2。每个处理器的核心数:
此方法对所有处理器的核心数量进行求和。
1 2 3 4 5 6 | 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}" );
|
登录后复制
3。逻辑处理器:
这直接访问逻辑处理器的总数(包括超线程)。
1 | Console.WriteLine($ "Number of Logical Processors: {Environment.ProcessorCount}" );
|
登录后复制
4。处理器(不包括 Windows 隐藏的处理器):
此方法考虑了可能被排除在标准 Windows 报告之外的处理器。 它需要使用设置 API。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 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}" );
|
登录后复制
重要注意事项:
-
System.Management.dll: 请记住在您的项目中添加对
System.Management.dll
的引用。
-
系统更新:为了在某些系统上获得准确的结果,可能需要完整的系统更新(修补程序和服务包)。 详细处理器信息的可用性取决于系统的配置和更新。
以上是如何在.NET/C#中获取CPU核心数?的详细内容。更多信息请关注PHP中文网其他相关文章!