Ich erstelle eine C++ App. Wie viele Threads können gleichzeitig ausgeführt werden?Wie viele Threads kann meine CPU/OS verarbeiten?
Antwort
Grundsätzlich kann Ihr Betriebssystem mehr oder weniger unendlich viele Threads verarbeiten. Das ist nur eine Frage der Aufrechterhaltung einer Liste von Kontexten/Terminierungsanforderungen.
gleichzeitig kann verschiedene Dinge für Sie bedeuten - wenn Sie eigentlich "zur gleichen Zeit" bedeuten, können Sie natürlich nicht mehr parallele Ausführung als Kerne in Ihrer CPU haben. Aber im weiteren Sinne, da "abwechselnd ausgeführt wird, während ein Thread beispielsweise durch Warten auf Datei-I/O blockiert wird, können andere arbeiten", gibt es keine Begrenzung.
Es gibt Grenzen für die Nützlichkeit - es gibt einen Handling Overhead und das Austauschen von Threads führt zu häufigen Cache-Invalidierungen, aber es gibt keine harten Grenzen.
_ "Jetzt ist gleichzeitig ein elastischer Ausdruck" _ Das ist strittig. –
@ πάνταῥεῖ jetzt besser? –
Nicht wirklich. Das Problem ist, dass die Frage ist zu weit und sollte geschlossen werden. Auch die Aussage _ "Grundsätzlich kann Ihr Betriebssystem mehr oder weniger unendlich viele Threads verarbeiten." _ Ist einfach falsch. –
Es gibt eine std::thread Memberfunktion hardware_concurrency() dass gibt eine Schätzung der Anzahl der Hardware-Thread Kontexte genannt:
#include <iostream>
#include <thread>
int main(){
std::cout << std::thread::hardware_concurrency() << std::endl;
return 0;
}
- 1. Wie viele Verbindungen kann sqlite 3 verarbeiten?
- 2. Für meine App, wie viele Threads wäre optimal?
- 3. Finden Sie heraus, wie viele Threads meine Anwendung läuft?
- 4. Wie viele Threads verwendet curl_multi_exec?
- 5. Kann meine Threads in C
- 6. Wie viele Verbindungen/wie viel Bandbreite kann Apache verarbeiten?
- 7. Wie kann Selen viele Aufrufe von isElementDisplay verarbeiten?
- 8. IE Frage: Wie viele CSS-Includes kann es verarbeiten?
- 9. Wie viele Anfragen pro Sekunde kann libmemcached verarbeiten?
- 10. Wie viele Socket-Verbindungen kann ein Silverlight-Chat-Server verarbeiten?
- 11. Wie viele Verbindungen kann Oracle Express Edition (XE) verarbeiten?
- 12. Wie viele temporäre Variablen kann Frama-C WP Plugin verarbeiten?
- 13. Server-Benchmarking: Wie viele HTTP-Anfragen kann der Server verarbeiten?
- 14. Wie viele Anfragen kann SQL Server pro Sekunde verarbeiten?
- 15. Wie viele Kanäle kann Redis (redis-py) verarbeiten?
- 16. Clojure viele Threads
- 17. Listenelemente mit fester Anzahl von Threads verarbeiten
- 18. Threads Ähnliche Strings zu verarbeiten sequentiell
- 19. Wie viele Threads erstellt der Knoten tatsächlich?
- 20. Wie viele Threads in selen grid zuweisen
- 21. OpenMP erstellt zu viele Threads
- 22. jWebsocket viele geparkten Threads (WARTEN)
- 23. Thread Pool vs viele einzelne Threads
- 24. lesen und verarbeiten viele Dateien mit Multithreading
- 25. Zu viele UCP Timer-Threads
- 26. Wie kann ich feststellen, wie viele Benutzer meine Website besuchen?
- 27. Wie kann ich FileNotFoundException verarbeiten?
- 28. Symfony 3 | FOSCommentBundle verwalten viele Threads/Kommentare
- 29. Eins zu viele Kartierung in Mungo, Wie erhalten und verarbeiten?
- 30. Websphere Work für viele Threads verbinden
Als Faustregel: Sie können so viele Threads gleichzeitig wie die Anzahl der CPU laufen Kerne, die Sie zur Verfügung haben. –
Ich gehe voran und entferne die "Was lib empfehlen Sie Frage"; Bibliotheksempfehlungen sind in StackOverflow nicht verfügbar. –
Ich erinnere mich, dass ich im Jahr 1998 Multi-Threaded-Workstation entwickelt und implementiert, die 45 Threads auf einem 2-Kern-System hatte. Der Großteil der Verarbeitung war Hintergrundaufgaben in mehreren Thread-Pools, wobei jeder Pool eine andere Priorität hatte. Heutzutage habe ich 16 mal die Kerne, verwende aber normalerweise nicht so viele Threads. – drescherjm