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

Comment obtenir le nombre de cœurs de processeur dans .NET/C# ?

Barbara Streisand
Libérer: 2025-01-18 19:51:10
original
1028 Les gens l'ont consulté

How to Get the Number of CPU Cores in .NET/C#?

Récupération du nombre de cœurs de processeur à l'aide de .NET/C#

.NET/C# fournit plusieurs méthodes pour identifier le nombre de cœurs de processeur disponibles sur un système. Voici quelques approches :

1. Processeurs physiques :

Cette méthode compte le nombre de processeurs physiques installés.

foreach (var item in new System.Management.ManagementObjectSearcher("Select * from Win32_ComputerSystem").Get())
{
    Console.WriteLine($"Number of Physical Processors: {item["NumberOfProcessors"]}");
}
Copier après la connexion

2. Cœurs par processeur :

Cette approche additionne le nombre de cœurs sur tous les processeurs.

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}");
Copier après la connexion

3. Processeurs logiques :

Cela accède directement au nombre total de processeurs logiques (y compris l'hyperthreading).

Console.WriteLine($"Number of Logical Processors: {Environment.ProcessorCount}");
Copier après la connexion

4. Processeurs (hors ceux masqués par Windows) :

Cette méthode prend en compte les processeurs qui pourraient être exclus des rapports Windows standard. Cela nécessite l'utilisation de l'API de configuration.

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}");
Copier après la connexion

Considérations importantes :

  • System.Management.dll : Pensez à ajouter une référence à System.Management.dll dans votre projet.
  • Mises à jour du système : Des mises à jour complètes du système (correctifs et service packs) peuvent être nécessaires pour obtenir des résultats précis sur certains systèmes. La disponibilité d'informations détaillées sur le processeur dépend de la configuration et des mises à jour du système.

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal