Zum Inhalt springen
L

Wikipedia · einfach zusammengefasst · Stand

Actor Model

Das Actor Model (deutsch Aktorenmodell, auch Aktormodell) ist in der Informatik ein Modell für nebenläufige Berechnungen bzw. Programme.

Inhalt3 Abschnitte
  1. 1. Grundidee und Ablauf
  2. 2. Vorteile und Nachteile
  3. 3. Verbreitung

Grundidee und Ablauf

Das Actor Model (deutsch Aktorenmodell, auch Aktormodell) ist ein Modell für nebenläufige Berechnungen und Programme. Ein Programm wird in nebenläufige Einheiten, die Aktoren, aufgeteilt. Aktoren kommunizieren ausschließlich durch Nachrichtenaustausch; das Modell ist damit eine Ausprägung des Message Passings.

Ein Aktor besitzt keinen geteilten Speicherbereich mit anderen Aktoren. Er hat einen eigenen gekapselten Zustand, einen Posteingang, eine Adresse und ein Verhalten. Diese Kapselung ähnelt der Kapselung in der objektorientierten Programmierung.

Der Empfang einer Nachricht ist ein Ereignis. Nachrichten werden zunächst im Posteingang gespeichert und nach dem FIFO-Prinzip bearbeitet: Die zuerst eingegangene Nachricht wird zuerst abgearbeitet. Das Verhalten eines Aktors beschreibt, wie er abhängig vom Aufbau einer Nachricht reagiert. Dabei kann ein Aktor Nachrichten an sich selbst oder andere Aktoren senden, neue Aktoren erzeugen oder sein eigenes Verhalten ändern.

Der Nachrichtenaustausch ist asynchron. Ein Sender kann nach dem Abschicken sofort andere Aktionen ausführen und muss nicht warten, bis der Empfänger die Nachricht akzeptiert. Das Modell legt keine maximale Dauer für die Vermittlung fest, verlangt aber, dass jede Nachricht nach endlicher Zeit beim Empfänger ankommt. Nachrichten müssen nicht zwingend in der Reihenfolge eintreffen, in der sie versendet wurden; viele Implementierungen garantieren dies trotzdem.

Vorteile und Nachteile

Ein Aktor arbeitet zu einem Zeitpunkt nur eine Nachricht ab. Kein anderer nebenläufiger Prozess darf seinen internen Speicherbereich beeinflussen. Deshalb ist die Programmierung innerhalb eines Aktors rein sequentiell: Annahmen über seinen internen Zustand zu Beginn der Bearbeitung einer Nachricht bleiben während dieser Bearbeitung gültig.

Das unterscheidet das Modell von Shared-Memory-Concurrency-Ansätzen. Dort greifen nebenläufige Threads auf einen gemeinsamen Speicherbereich zu, der teilweise mit Locking-Primitive wie Semaphore, Mutexe und Signals geschützt wird.

Ein Nachteil ist der Speicherbedarf. Da Aktoren keinen gemeinsamen Speicher besitzen, sind sowohl Nachrichten als auch der interne Speicherbereich eines anderen Aktors Kopien bestimmter Werte. Dieselbe Information kann daher mehrfach im Speicher liegen.

Außerdem ist der Aufwand höher als bei Shared State Concurrency: Das Versenden, Ablegen in der Mailbox und Verarbeiten einer Nachricht steht einem im besten Fall statisch gebundenen Funktionsaufruf gegenüber.

Verbreitung

Das Actor Model ist besonders bei funktionalen Programmiersprachen verbreitet. Es ist das grundlegende Modell für Nebenläufigkeit in Erlang. Verwendet wird es außerdem unter anderem in Io, D, Pony, Scala, Swift und Dart.

Auch Sprachen mit gemischten Paradigmen verbreiten das Modell, beispielsweise Scala. Für klassisch imperative Sprachen gibt es ebenfalls Umsetzungen, etwa Theron als Actor-Bibliothek für C++.

Weiterlesen