Maison >développement back-end >C++ >Comment puis-je déterminer par programme le nombre de cœurs sur une machine ?
Détermination du nombre de cœurs sur une machine par programmation
Dans divers scénarios informatiques, comprendre le nombre de cœurs disponibles sur une machine est crucial. C/C n'offre pas de solution indépendante de la plate-forme pour cette tâche. Cependant, il existe des approches spécifiques à la plate-forme qui peuvent fournir ces informations.
C 11 (indépendant de la plate-forme)
C 11 introduit std::thread::hardware_concurrency (), qui fournit une méthode portable pour obtenir le nombre de noyaux.
#include <thread> const auto processor_count = std::thread::hardware_concurrency();
Pré-C 11 (Spécifique à la plateforme)
En C avant C 11, des méthodes spécifiques doivent être utilisées en fonction des plateforme :
Win32
SYSTEM_INFO sysinfo; GetSystemInfo(&sysinfo); int numCPU = sysinfo.dwNumberOfProcessors;
Linux, Solaris, AIX, Mac OS X >=10.4
int numCPU = sysconf(_SC_NPROCESSORS_ONLN);
FreeBSD, MacOS X, NetBSD, OpenBSD
int mib[4]; int numCPU; std::size_t len = sizeof(numCPU); /* set the mib for hw.ncpu */ mib[0] = CTL_HW; mib[1] = HW_AVAILCPU; // alternatively, try HW_NCPU; /* get the number of CPUs from the system */ sysctl(mib, 2, &numCPU, &len, NULL, 0);
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 utilisant ces méthodes spécifiques à la plate-forme ou l'approche indépendante de la plate-forme C 11, vous pouvez déterminer par programme le nombre de cœurs disponibles sur une machine, vous permettant ainsi d'optimiser l'utilisation des ressources et obtenez de meilleures performances dans vos applications.
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!