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
Susan Sarandonoriginal
2024-12-14 18:10:11426parcourir

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();

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;

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

int numCPU = sysconf(_SC_NPROCESSORS_ONLN);

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;
}

HPUX

int numCPU = mpctl(MPC_GETNUMSPUS, NULL, NULL);

IRIX

int numCPU = sysconf(_SC_NPROC_ONLN);

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

NSUInteger a = [[NSProcessInfo processInfo] processorCount];
NSUInteger b = [[NSProcessInfo processInfo] activeProcessorCount];

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!

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