Grundlagen


... [ Seminar Programmiersprachen und -Systeme ] ... [ Inhaltsverzeichnis ] ... [ Der Actor ] ...

Übersicht: Grundlagen


Kurzdefinition Nebenläufigkeit

Mehrere Ereignisse sind nebenläufig, wenn sie sich nicht gegenseitig beeinflussen. Kein Ereignis darf Ursache eines anderen Ereignisses sein.

Nebenläufigkeit in der Informatik

Teile eines Programms werden gleichzeitig ausgeführt. Dies geschieht in separaten Prozessen oder threads. Jedoch ist in der Informatik meist Kommunikation bzw. die gegenseitige Beeinflussung solcher threads erwünscht. Um dies zu realisieren, gibt es verschiedene Möglichkeiten. In Java können threads auf gemeinsame Daten zugreifen. Damit es hier nicht zu unerwarteten Änderungen kommt, werden die Datenzugriffe synchronisiert.
In Scala hingegen kommunizieren die threads über Nachrichten und Mailboxen. Diese Techniken sorgen zwar für sichere Kommunikation, allerdings können sie zu deadlocks führen. Dies bedeutet, dass alle threads auf ein Ereignis eines anderen threads warten und sich somit nicht mehr aus dieser Schleife befreien können.

Warum Nebenläufigkeit?

Durch heutige Mehrprozessorsysteme wird das Thema Nebenläufigkeit immer zentraler. Selbst auf Einprozessorsystemen lässt sich durch geschickte Programmierung die Geschwindigkeit erhöhen. Auch wenn hier vom Betriebssystem die Nebenläufigkeit nur simuliert wird. Auf Mehrprozessorsystemen ist ist allerdings auch tatsächlich paralleles Rechnen möglich. Somit lässt sich die Geschwindigkeit von Programmen teilweise deutlich erhöhen.


Scalas Konzept der Nebenläufigkeit?

Scala kann auf die Java Bibliotheken zugreifen und somit auch die Standardthreads aus Java nutzen. Allerdings verfolgt Scala ein komplett anderes Konzept der Nebenläufigkeit. Als Vorlage diente das Konzept der Nebenläufigkeit aus der Sprache Erlang, welche von der Firma Ericsson entwickelt wurde.
Im Mittelpunkt stehen die Actors. Sie kommunizieren über asynchrone Nachrichten, die sie sequenziell aus ihrer Mailbox verarbeiten. Diese Nachrichten sind im Normalfall unveränderlich und somit ist keine Synchronisation nötig. Ziel dieses Konzeptes ist es, die nebenläufige Programmierung zu vereinfachen und auch in komplexen Projekten den Programmcode leserlich zu gestalten.


... [ Seminar Programmiersprachen und -Systeme ] ... [ Inhaltsverzeichnis ] ... [ Der Actor ] ...