Maison > développement back-end > C++ > Comment déterminer par programme le nombre de cœurs de processeur dans différents systèmes ?

Comment déterminer par programme le nombre de cœurs de processeur dans différents systèmes ?

Susan Sarandon
Libérer: 2024-12-14 18:10:11
original
430 Les gens l'ont consulté

How to Programmatically Determine the Number of CPU Cores in Different Systems?

Détermination du nombre de cœurs de machine par programmation

Dans divers scénarios, il devient impératif de déterminer le nombre de cœurs qu'une machine possède. Ces informations aident à optimiser l’allocation des ressources et à comprendre les capacités du système. Plusieurs méthodes existent pour déterminer cette métrique cruciale.

C 11 et versions ultérieures

C 11 a introduit une solution portable pour récupérer le nombre de cœurs :

#include <thread>

// May return 0 if unable to detect.
const auto processor_count = std::thread::hardware_concurrency();
Copier après la connexion

Approches pré-C 11 et spécifiques à la plateforme

Avant jusqu'à C 11, des méthodes spécifiques à la plate-forme ont été utilisées :

Windows

SYSTEM_INFO sysinfo;
GetSystemInfo(&sysinfo);
int numCPU = sysinfo.dwNumberOfProcessors;
Copier après la connexion

Linux, Solaris, AIX, Mac OS X (à partir de Tiger)

int numCPU = sysconf(_SC_NPROCESSORS_ONLN);
Copier après la connexion

FreeBSD, macOS, NetBSD, OpenBSD

int mib[4];
int numCPU;
std::size_t len = sizeof(numCPU); 

mib[0] = CTL_HW;
mib[1] = HW_AVAILCPU;

sysctl(mib, 2, &numCPU, &len, NULL, 0);

if (numCPU < 1) 
{
    mib[1] = HW_NCPU;
    sysctl(mib, 2, &numCPU, &len, NULL, 0);
    if (numCPU < 1)
        numCPU = 1;
}
Copier après la connexion

HPUX

int numCPU = mpctl(MPC_GETNUMSPUS, NULL, NULL);
Copier après la connexion

IRIX

int numCPU = sysconf(_SC_NPROC_ONLN);
Copier après la connexion

Objectif- C (Mac OS X >= 10,5 ou iOS)

NSUInteger a = [[NSProcessInfo processInfo] processorCount];
NSUInteger b = [[NSProcessInfo processInfo] activeProcessorCount];
Copier après la connexion

En tirant parti de ces techniques, les développeurs peuvent déterminer sans effort le nombre de cœurs disponibles sur leurs machines, permettant une utilisation efficace des ressources et une optimisation des performances.

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!

source:php.cn
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