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
DDDoriginal
2024-12-13 09:23:11178parcourir

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

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!

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