Maison >développement back-end >C++ >Comment puis-je déterminer le nombre de cœurs de processeur dans mon application .NET/C# ?

Comment puis-je déterminer le nombre de cœurs de processeur dans mon application .NET/C# ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-18 19:57:09932parcourir

How Can I Determine the Number of CPU Cores in My .NET/C# Application?

Déterminer le nombre de cœurs de processeur dans .NET/C#

Comprendre le nombre de cœurs de processeur disponibles est essentiel pour optimiser l'utilisation des ressources pour les applications .NET/C#. Cet article explore plusieurs façons de récupérer ces informations, permettant aux développeurs de prendre des décisions éclairées concernant le multithreading et l'optimisation des performances.

Processeurs physiques, cœurs et processeurs logiques

Il est important de faire la différence entre le nombre de processeurs physiques, de cœurs et de processeurs logiques. Un processeur physique représente l'unité matérielle réelle, tandis qu'un cœur est une unité d'exécution unique au sein du processeur. Un processeur logique est une représentation virtualisée d'un cœur, permettant au système d'exploitation de planifier les threads plus efficacement en les présentant comme des entités distinctes.

Récupérer le nombre de cœurs

Dans .NET/C#, il existe plusieurs façons de récupérer le nombre de cœurs de processeur.

Processeur logique (classe Environnement)

La classe Environnement donne accès au nombre de processeurs logiques :

<code class="language-csharp">Console.WriteLine("逻辑处理器数量:{0}", Environment.ProcessorCount);</code>

Core (WMI)

Grâce à WMI (Windows Management Instrumentation) vous pouvez récupérer le nombre de cœurs :

<code class="language-csharp">int coreCount = 0;
foreach (var item in new System.Management.ManagementObjectSearcher("Select * from Win32_Processor").Get())
{
    coreCount += int.Parse(item["NumberOfCores"].ToString());
}
Console.WriteLine("核心数量:{0}", coreCount);</code>

Processeur physique (WMI)

Dans .NET Core, vous pouvez obtenir le nombre de processeurs physiques à l'aide de WMI :

<code class="language-csharp">foreach (var item in new System.Management.ManagementObjectSearcher("Select * from Win32_ComputerSystem").Get())
{
    Console.WriteLine("物理处理器数量:{0}", item["NumberOfProcessors"]);
}</code>

Processeurs exclus dans Windows (API Windows)

L'appel de l'API Windows dans setupapi.dll permet la découverte des processeurs exclus dans Windows :

<code class="language-csharp">static void Main(string[] args)
{
    int deviceCount = 0;
    IntPtr deviceList = IntPtr.Zero;
    // 处理器类ID的GUID
    Guid processorGuid = new Guid("{50127dc3-0f36-415e-a6cc-4cb3be910b65}");
    ...
    Console.WriteLine("核心数量:{0}", deviceCount);
}</code>

Résumé

Cet article présente plusieurs méthodes pour récupérer le nombre de cœurs de processeur dans .NET/C#. En comprenant ces techniques, les développeurs peuvent optimiser l'utilisation des ressources, équilibrer les charges de travail des threads et améliorer les performances des applications.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn