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
DDDOriginal
2024-12-29 02:55:10176Durchsuche

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

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!

Stellungnahme:
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