Heim > Backend-Entwicklung > C++ > Wie kann ich die Kernanzahl einer Maschine in C portabel bestimmen?

Wie kann ich die Kernanzahl einer Maschine in C portabel bestimmen?

DDD
Freigeben: 2024-12-29 02:55:10
Original
140 Leute haben es durchsucht

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

Plattformunabhängige Bestimmung der Kernanzahl einer Maschine

Die Bestimmung der Anzahl der Kerne auf einer Maschine kann für die Optimierung der Softwareleistung von entscheidender Bedeutung sein. Es kann jedoch eine Herausforderung sein, eine plattformunabhängige Lösung für diese Aufgabe zu finden.

C 11-Lösung

Glücklicherweise hat C 11 eine plattformunabhängige Methode zur Kernidentifizierung eingeführt count:

#include <thread>

const auto processor_count = std::thread::hardware_concurrency();
Nach dem Login kopieren

Diese Methode gibt die logische Anzahl der Kerne zurück, wie von der zugrunde liegenden Hardware und dem Betriebssystem gemeldet System.

Lösungen vor C 11

Für C-Versionen vor C 11 gibt es keine tragbare Methode zur Bestimmung der Kernanzahl. Stattdessen müssen plattformspezifische Ansätze zum Einsatz kommen:

Windows

SYSTEM_INFO sysinfo;
GetSystemInfo(&sysinfo);
int numCPU = sysinfo.dwNumberOfProcessors;
Nach dem Login kopieren

Unix-ähnliche Systeme

int numCPU = sysconf(_SC_NPROCESSORS_ONLN);
Nach dem Login kopieren

macOS (vor 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);
Nach dem Login kopieren

Objective-C (macOS 10.5 oder höher)

NSUInteger a = [[NSProcessInfo processInfo] processorCount];
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich die Kernanzahl einer Maschine in C portabel bestimmen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage