如何在C#中找到CPU内核数?

我们可以获得与处理器有关的几条不同的信息

  • 物理处理器数量

  • 核心数

  • 逻辑处理器数量

这些都可以有所不同。对于具有2个启用双核超线程的处理器的计算机,有2个物理处理器,4个内核和8个逻辑处理器。

逻辑处理器的数量可通过Environment类获得,但其他信息仅可通过WMI获得(并且可能必须安装一些修补程序或Service Pack才能在某些系统上获得它)-

在项目中添加对System.Management.dll的引用。在.NET Core中,该引用作为NuGet包可用(仅适用于Windows)。

物理处理器

示例

class Program{
   public static void Main(){
      foreach (var item in new
      System.Management.ManagementObjectSearcher("Select * from
      Win32_ComputerSystem").Get()){
         Console.WriteLine("Number Of Physical Processors: {0} ",
         item["NumberOfProcessors"]);
      }
      Console.ReadLine();
   }
}

输出结果

Number Of Physical Processors: 1

核心数

class Program{
   public static void Main(){
      int coreCount = 0;
      foreach (var item in new
      System.Management.ManagementObjectSearcher("Select * from
      Win32_Processor").Get()){
         coreCount += int.Parse(item["NumberOfCores"].ToString());
      }
      Console.WriteLine("Number Of Cores: {0}", coreCount);
      Console.ReadLine();
   }
}

输出结果

Number Of Cores: 2

逻辑处理器

class Program{
   public static void Main(){
      Console.WriteLine("Number Of Logical Processors: {0}",
      Environment.ProcessorCount);
      Console.ReadLine();
   }
}

输出结果

Number Of Logical Processors: 4