BigBasti's Blog About Me & my Digital Lifestyle

14Sep/090

.NET: Parallelprogrammierung

Heutzutage haben die meisten Computer und auch Laptops Prozessoren mit mehreren Kernen. Das wollen natürlich viele Programmierer für sich nutzen um ihre eigenen Programme zu beschleunigen.

intel_quadcore

Bild 1: Eine Intel CPU mit 4 Kernen

An dieser Stelle kommt das Stichwort "Multithreading" ins Spiel! Doch leider denken viele, dass wenn man mehrere Threads innerhalb eines Programms erstellt, diese dann auch auf verschiedenen Prozessoren ausgeführt werden. Doch dies ist leider nicht so!

Denn auf welchem Prozessorkern ein Thread läuft entscheidet der Thread-Sheduler des Systems, außer man sagt ihm was anderes. So werden alle Threads eines Programms meistens nur auf einem Prozessor ausgeführt und laufen somit nicht parallel sondern sequentiell!

Es sieht zwar aus, dass die beiden Threads gleichzeitig arbeiten, dem ist aber nicht so! Also ist multithreading nicht gleich parallel!

Denn nur wenn ein Programm parallel auf zwei Kernen läuft erzielt man auch einen Performance Gewinn, da erst dann die Threads wirklich parallel laufen! So kann auch Multithreading auf einem SingleCore CPU zu Performanceeinbußen kommen, da das erstellen der Threads und das Hin- und Herschlalten zwischen den Threads Zeit kostet!

Was dazu kommt ist, dass Parallelprogrammierung sehr komplex ist und es zu unvorhergesehenen Problemen kommen kann. Zum Beispiel können die so genannten "Dead Locks" entstehen, wenn zB. "Thread A" den Wert einer Varibale löscht, die "Thread B" aber noch benötigt! Ein Crash ist vorprogrammiert!

Hier müssen "Synchronistations" Techniken angewandt werden um die Bildung solcher Fehler vorzubeugen, die nur sehr schwer durch debugging entdeckt werden können!

Das ist ein sehr großes Thema, das ich demnächst auch in einer Serie weiter vorstellen werde und auch einige Beispiele dazu anfertigen!

Bisdahin kann ich euch den MSDN-Webcast zu diesem Thema empfehlen, der vom Einstieg über die Probleme  auch einige Beispiele bietet! Zu finden hier!

VN:F [1.9.4_1102]
Rating: 8.5/10 (2 votes cast)
.NET: Parallelprogrammierung, 8.5 out of 10 based on 2 ratings
Share and Enjoy:
  • Print
  • Digg
  • del.icio.us
  • Facebook
  • Yigg
  • Google Bookmarks
  • PDF
  • MySpace

hat dir dieser Artikel gefallen?

Dann abonniere doch diesen Blog per RSS Feed!

Kommentare (0) Trackbacks (0)

Zu diesem Artikel wurden noch keine Kommentare geschrieben.


Kommentar schreiben


Noch keine Trackbacks.

Get Adobe Flash playerPlugin by wpburn.com wordpress themes