Maison > développement back-end > C++ > Comment puis-je déterminer de manière portable le nombre de cœurs d'une machine en C ?

Comment puis-je déterminer de manière portable le nombre de cœurs d'une machine en C ?

DDD
Libérer: 2024-12-29 02:55:10
original
142 Les gens l'ont consulté

How Can I Portably Determine a Machine's Core Count in C  ?

Détermination indépendante de la plate-forme du nombre de cœurs d'une machine

La détermination du nombre de cœurs sur une machine peut être essentielle pour optimiser les performances logicielles. Cependant, trouver une solution indépendante de la plate-forme pour cette tâche peut s'avérer difficile.

Solution C 11

Heureusement, C 11 a introduit une méthode indépendante de la plate-forme pour identifier les principaux count :

#include <thread>

const auto processor_count = std::thread::hardware_concurrency();
Copier après la connexion

Cette méthode renvoie le nombre logique de cœurs, tel que rapporté par le matériel sous-jacent et le fonctionnement système.

Solutions pré-C 11

Pour les versions C antérieures à C 11, il n'existe aucun moyen portable de déterminer le nombre de cœurs. Au lieu de cela, des approches spécifiques à la plate-forme doivent être utilisées :

Windows

SYSTEM_INFO sysinfo;
GetSystemInfo(&sysinfo);
int numCPU = sysinfo.dwNumberOfProcessors;
Copier après la connexion

Systèmes de type Unix

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

macOS (avant 10.5)

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;

/* get the number of CPUs from the system */
sysctl(mib, 2, &numCPU, &len, NULL, 0);
Copier après la connexion

Objective-C (macOS 10.5 ou version ultérieure)

NSUInteger a = [[NSProcessInfo processInfo] processorCount];
Copier après la connexion

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