Moin Leute,
ich hätte da eine Frage zum Thema Multithreading.
Ist es besser ein Programm in diverse Threads aufzuteilen oder doch versuchen bei einem zu bleiben?
Im Moment teile ich es nur, wenn's nötig ist.
Und wird der Computer mehr belastet, wenn ich einen neuen Thread starte?
Multihreading > Singlethread?
- cloidnerux
- Moderator
- Beiträge: 3125
- Registriert: Fr Sep 26, 2008 4:37 pm
- Wohnort: Ram (Gibts wirklich)
Re: Multihreading > Singlethread?
Beides. Es hängt davon ab, was du machen willst.ich hätte da eine Frage zum Thema Multithreading.
Ist es besser ein Programm in diverse Threads aufzuteilen oder doch versuchen bei einem zu bleiben?
Generell bedeutet Multitasking mehr Verwaltungsaufwand, das Problem ist aber das ALLE Modernen Computer Multicore-Prozessoren haben und da Single-Thread Task eben nur auf einem laufen werden, sprich du wirst nur die Rechenleistung eines einzigen Prozessors nutzen können, was z.B bei einem 32-Core System gerade mal 3,125% wären.
Ein weiteres ist, das alle modernen OS tasks schlafen legen, wenn sie gerade nix zu tun haben oder auf ein Event warten, das hilft Strom und Leistung sparen und verbessert die Perfomance des Computers. Auch kannst du mit Multitasking Programmteile ansprechbar halten, weil du aufwendige Berechnungen in einen anderen Task verschoben hast, dies ist z.B für Oberflächen unabdinglich, weil es meistens schlecht für den Nutzer ist, wenn sich das Programm gar nicht mehr rührt, wenn mal irgendetwas länger als 20ms dauert.
Insgesamt gibt es also nicht viele Argumente die für Single-Thread Programme sprechen, da dieser wirklich nur bei kleinen Dienstprogrammen ohne großen rahmen sinn machen und du eh früher oder später Multitasking benötigst, da dich das OS, deine GUI und die Bedienbarkeit deines Programmes dazu zwingen.
Redundanz macht wiederholen unnötig.
quod erat expectandum
quod erat expectandum
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Multihreading > Singlethread?
Kommt stark drauf an, was Du tust und welche Hardware Du hast.Kmitska hat geschrieben:Moin Leute,
ich hätte da eine Frage zum Thema Multithreading.
Ist es besser ein Programm in diverse Threads aufzuteilen oder doch versuchen bei einem zu bleiben?
Musst Du mehrere Dinge gleichzeitig tun, stellt sich die Frage nicht.
Kannst Du Deine Aufgabe nur Schritt für Schritt hintereinander ausführen, kannst Du sie also nicht parallelisieren, kann macht Parallelisierung natürlich auch keinen Sinn, sondern erzeugt nur zusätzlichen Overhead.
Ja - denn der Thread muss erzeugt und am Schluss wieder vernichtet werden.Kmitska hat geschrieben:Und wird der Computer mehr belastet, wenn ich einen neuen Thread starte?
Und natürlich machen Threads nur dann Sinn, wenn sie unabhängig voneinander laufen können.
Bei einer Multi-Core-CPU (bzw. Hyperthreading) werden die Threads auf unterschiedliche Kerne verteilt. Hier willst Du die CPU entsprechend mehr auslasten - zum Beispiel indem Du beim Kompilieren, mehr als eine Instanz des Compilers gleichzeitig aufrufst.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.