如何在C#中获取CPU的逻辑内核/线程数?

Kam*_*mil 10 c# multithreading .net-3.5

如何在CPU中获得多个逻辑核心?

我需要这个来确定我应该在我的应用程序中运行多少个线程.

Mik*_*lor 23

使用Environment.ProcessorCount属性,它返回逻辑核心数.


Rav*_*ale 17

您可以通过Environment类
核心数获取多个逻辑处理器:

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);
Run Code Online (Sandbox Code Playgroud)

逻辑处理器的数量

foreach (var item in new System.Management.ManagementObjectSearcher("Select * from Win32_ComputerSystem").Get())
{
    Console.WriteLine("Number Of Logical Processors: {0}", item["NumberOfLogicalProcessors"]);
}
Run Code Online (Sandbox Code Playgroud)


Environment.ProcessorCount

 using System;

 class Sample 
 {
     public static void Main() 
     {
        Console.WriteLine("The number of processors on this computer is {0}.", 
           Environment.ProcessorCount);
     }
 }
Run Code Online (Sandbox Code Playgroud)

浏览此链接http://msdn.microsoft.com/en-us/library/system.environment.processorcount.aspx

  • 我发现并添加了对该dll的引用.它也可以,但比Environment.ProcessorCount慢得多.有什么不同?我知道为什么WMI技术运行速度较慢,但​​结果会有所不同吗?Win32_ComputerSystem会在Windows 64上运行吗? (2认同)