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

Comment puis-je récupérer le nombre de cœurs de processeur dans .NET/C# ?

Susan Sarandon
Libérer: 2025-01-18 20:20:17
original
438 Les gens l'ont consulté

How Can I Retrieve the CPU Core Count in .NET/C#?

Obtenir le nombre de cœurs de processeur dans .NET/C#

La détermination du nombre de cœurs de processeur disponibles pour votre application est essentielle pour optimiser les performances. Dans .NET/C#, il existe plusieurs façons d'extraire ces informations :

1. Environnement.ProcessorCount

Cette propriété fournit le nombre de processeurs logiques sur le système. Cependant, il ne fait pas de différence entre les processeurs physiques et les cœurs hyper-threadés.

Console.WriteLine("逻辑处理器数量: {0}", Environment.ProcessorCount);
Copier après la connexion

2.Win32_Processor

En utilisant WMI (Windows Management Instrumentation), vous pouvez accéder à des informations plus détaillées sur le processeur :

Processeur physique :

foreach (var item in new System.Management.ManagementObjectSearcher("Select * from Win32_ComputerSystem").Get())
{
    Console.WriteLine("物理处理器数量: {0}", item["NumberOfProcessors"]);
}
Copier après la connexion

Nombre de cœurs :

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

3. Processeurs exclus

De plus, vous pouvez utiliser les appels d'API Windows pour découvrir les processeurs exclus dans Windows. Le code suivant affiche le nombre total de processeurs logiques, y compris les processeurs exclus :

int deviceCount = 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))
        {
            deviceCount = deviceNumber;
            break;
        }
    }
}
finally
{
    if (deviceList != IntPtr.Zero) { SetupDiDestroyDeviceInfoList(deviceList); }
}
Console.WriteLine("核心数量: {0}", deviceCount);
Copier après la connexion

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