Gibt es eine Möglichkeit, die Anzahl der Verarbeitungseinheiten wie CPU oder Kerne in einem System zu erhalten? Ich werde eine App mit Pthreads schreiben, also wenn es einen Posix-Anruf gibt, wäre das großartig. Ich weiß über das Lesen von/proc/cpuinfo, aber das ist nicht so tragbar. Gibt es noch einen anderen tragbaren Weg?Eine portable Möglichkeit, die Anzahl der Verarbeitungseinheiten (# CPU, Kerne) in c zu bekommen?
1
A
Antwort
4
Das POSIX (Thread) -Komitee betrachtete die Unterstützung einer solchen Operation, aber dann refused to. Leute haben collected information auf wie man das auf verschiedenen Systemen macht.
1
Es gibt keine POSIX-Art, die ich kenne. Sie müssen zurückfallen und plattformübergreifende Überprüfungen durchführen oder eine Bibliothek finden, die bereits Prüfungen für Sie durchführt.
This page hat herunterladbaren Code für eine Reihe von UNIX-Implementierungen.
0
Nicht zu meinem Wissen. Unter Windows zum Beispiel würden Sie das von GetSystemInfo bekommen. Sie können diese Informationen möglicherweise auf x86-CPUs mit einem CPUID-Assembleraufruf abrufen, aber das ist auf Nicht-x86-Plattformen nicht sinnvoll.
Die letzten beiden Absätze dieses Newsgroups von Butenhof sind besonders passend, würde ich sagen; obwohl ich hinzufügen würde, dass die einzige Person, die wirklich die Frage beantworten kann, "ob meine App von der Erstellung eines anderen Threads profitieren würde" der Systemadministrator ist, was impliziert, dass "Anzahl der Threads" benutzerdefinierbar sein sollte. – caf
Wenn ich die französischen Fehlermeldungen richtig verstehe, scheinen diese Links für mich jetzt gebrochen zu sein. – leecbaker