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!