Die Tendenz zur paralleisierung der Codeausführung auf Prozessoren ist nicht mehr zu übersehen.
Die Physik sorgt derzeit dafür dass weitere Taktfrequenzsteigerungen derzeit aus Kostengründen nur sehr langsam von statten gehen. Statt dessen wird es immer günstiger mehrere Prozessoren bzw. Prozessorkerne parallel zu betreiben.
Dies ist zwar gut und schön, de facto ist die Anwendungsentwicklung im Businessbereich nicht wirklich darauf vorbereitet (für Betriebssysteme, Server oder Spielesoftware gilt dies weniger). Parallelverarbeitung am Client führt derzeit ein relatives Nischendasein, vor allem auch, weil es sowohl technisch als auch fachlich sehr schwierig ist saubere parallele Lösungen zu implementieren.
Man findet zwar schon in jedem Anfänger-Programmierbuch irgend welche Kapitel über Multithreading, wer sich aber etwas genauer damit beschäftigt merkt sofort, dass diese Ausführungen meist wertlos sind weil sie die Hintergründe und die wirklichen Probleme meist verschweigen!
Folgende Fragen bleiben aus meiner Sicht meist unbeantwortet:
wann und wo macht ein weiterer Thread wirklich Sinn
wann und wo muss ich wieder mit dem Hauptthread synchronisieren,
wieviel Gewinn bleibt am Ende übrig!
Gewinn = [Geschwindigkeitsgewinn durch parallelverarbeitung] - [Aufwand für die Synchronisierung] - [Aufwand für die zusätzliche Komplexizität der gesamten Anwendung]
Alles deuted darauf hin dass wir derzeit einfach fachlich noch nicht ganz vorbereitet für dieses Thema sind. Aber ich gehe davon aus dass wir in den nächsten Jahren noch viel Neues zu diesem Thema hören und lernen werden.
Ein gutes Beispiel dafür habe ich heute zufällig im Web gefunden!
Ein Artikel bereichtet darüber, dass Microsoft bereist an einer neuen Version von LINQ arbeitet (PLINQ), wo es im Prinzip darum geht, die parallelverarbeitung schon von der Architektur/Programmiersprache her besser zu unterstützen.
LINQ ist derzeit ja für .Net 3.5 angekündigt, dann können wir im Erfolgsfall hoffen dass PLINQ Bestandteil von .Net 5.0 ist....
Man darf gespannt sein was sich sonst noch neues in diesem Bereich tun wird, auch Intel scheint sehr stark an Werkzeugen in diese Richtung zu entwickeln, was ja auch kein Wunder ist schließlich wollen die ganzen Multicore Prozessoren ja cuh verkauft werden!