Maison > développement back-end > C++ > Comment puis-je déterminer par programme le nombre de cœurs sur une machine ?

Comment puis-je déterminer par programme le nombre de cœurs sur une machine ?

DDD
Libérer: 2024-12-13 09:23:11
original
175 Les gens l'ont consulté

How Can I Programmatically Determine the Number of Cores on a 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();
Copier après la connexion

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

Linux, Solaris, AIX, Mac OS X >=10.4

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

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

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