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();
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;
Unix-ähnliche Systeme
int numCPU = sysconf(_SC_NPROCESSORS_ONLN);
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);
Objective-C (macOS 10.5 oder höher)
NSUInteger a = [[NSProcessInfo processInfo] processorCount];
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!