当前位置: 首页 > 编程笔记 >

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

法烨华
2023-03-14
本文向大家介绍如何在C#中找到CPU内核数?,包括了如何在C#中找到CPU内核数?的使用技巧和注意事项,需要的朋友参考一下

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

    list-paddingleft-2">
  • 物理处理器数量

  • 核心数

  • 逻辑处理器数量

这些都可以有所不同。对于具有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
 类似资料:
  • 问题内容: 在Linux中,假设线程的pid为[pid],则从目录/ proc / [pid]中我们可以获得许多有用的信息。例如,这些proc文件/ proc / [pid] / status,/ proc / [pid] / stat和/ proc / [pid] / schedstat都是有用的。但是,如何获取线程正在运行的CPU核心号?如果线程处于睡眠状态,我如何才能知道线程在再次调度后将在

  • 问题内容: 我有这个脚本,但是我不知道如何获取打印输出中的最后一个元素: 最后一个元素应该是CPU数量减1。 问题答案: 将计算以“处理器”开头的行数 对于具有超线程的系统,可以使用 应该返回(例如)(而上面的命令将返回)

  • 问题内容: 如何从Java代码中找到应用程序可用的内核数量? 问题答案: 如果小于1,则说明您的处理器即将死机,或者JVM中存在严重的错误,或者Universe即将崩溃。

  • 问题内容: 我想用Java解决带有多个线程的数学问题。我的数学问题可以分为多个工作单元,我想通过几个线程来解决。 我不希望有固定数量的线程在工作,而是与CPU核心数量匹配的线程数量。我的问题是,为此我在互联网上找不到简单的教程。我发现的只是带有固定线程的示例。 如何才能做到这一点?你能提供例子吗? 问题答案: 你可以通过使用静态运行时方法,确定提供给Java虚拟机的进程数availableProc

  • 问题内容: 大概有一个库或简单的asm blob,可以获取我正在执行的当前CPU的编号。 问题答案: 使用以确定在其上调用线程运行的CPU。请参阅(系统调用)和(库包装器)。但是,请注意其内容: 仅在调用时保证放置在cpu中的信息是最新的:除非已使用sched_setaffinity(2)修复了CPU关联性,否则内核可能随时更改CPU。(通常不会发生这种情况,因为调度程序会尝试最大程度地减少CPU

  • 所以从一开始:当计算机启动时,引导线程(通常是处理器0中核心0中的线程0)就开始从地址0xFFFFFFF0中提取代码。所有剩下的CPU/核都处于特殊的Hibernate状态,称为等待-SIPI(WFS)。 然后,在OS加载后,它开始管理进程,并在CPU/核之间调度它们,通过高级可编程中断控制器(APIC)向WFS中的每个线程发送一个特殊的处理器间中断(IPI)(启动IPI)。SIPI包含该线程应该