006
21.10.2005, 10:32 Uhr
ao
(Operator)
|
1. Kein Computer rechnet schneller, nur weil mehrere Threads im Spiel sind. Man gewinnt nur zusätzliche Freiheitsgrade und kann die verfügbare Rechenleistung besser verteilen.
2. Multithreading hat grundsätzlich den Nachteil, dass der Verwaltungsaufwand steigt. Die Threads müssen an geeigneten Stellen synchronisiert werden, um den Datenaustausch zu regeln und um Datenobjekte gegen Zugriffskollision zu schützen. Dagegen stehen je nach Anwendungsfall unter Umständen deutliche Vorteile.
3. Die Aufteilung Worker-Thread / GUI-Thread wurde schon beschrieben.
4. Häufig ist nicht allein der globale Datendurchsatz über alles entscheidend, sondern kurze Reaktionszeiten auf bestimmte Ereignisse. Ein einziger Workerthread, der die ganze Arbeit macht, kann, wenn er im falschen Moment am falschen Ort ist, woanders wichtige Dinge verpassen. In vielen Fällen hilft es hier, mehrere Threads so einzurichten, dass jeder Thread eins dieser wichtigen Dinge überwacht und ggfs. schnell reagieren kann.
5. Die Aufteilung einer rechenintensiven Aufgabe auf mehrere Worker-Threads bringt nur dann spürbare Vorteile, wenn der Computer über mehrere Prozessoren verfügt, wenn diese vom Programm / Compiler und vom Betriebssystem unterstützt werden und wenn das Problem sich so aufteilen lässt, dass weitgehend unabhängige Aufgaben entstehen ("Parallelisierbarkeit").
6. Mehrere Prozesse sind die nächste Stufe der Aufteilung. Eine auf mehrere Prozesse verteilte Anwendung ist nicht mehr an eine einzige Maschine gebunden. Hier kann durch Hinzunahme weiterer Computer eine Steigerung der Rechenleistung erreicht werden - Voraussetzung ist aber auch hier eine gute Parallelisierbarkeit der Aufgabe. Der Aufwand zur Verwaltung einer derart verteilten Anwendung ist natürlich erheblich.
6. Die Trennung zwischen Prozessen ist stärker ausgeprägt als zwischen Threads im gleichen Prozess. Konsequenz ist, dass zur Interprozess-Kommunikation in jedem Fall Betriebssystem-Funktionen eingesetzt werden müssen, aber auch, dass Probleme durch konkurrierenden Zugriff auf Datenobjekte ausgeschlossen sind.
So weit erst mal mein Senf
ao |