Unterschiede zwischen dem Akteurmodell und kommunikativen sequentiellen Prozessen (CSP)

16

Wenn wir uns das Actor Model und Communicating Sequential Processes ansehen, stellen wir fest, dass beide versuchen, auf der Grundlage der Nachrichtenübergabe eine Parallelität herzustellen , aber sie unterscheiden sich .

(Wir sehen Implementierungen des CSP Modell in go-lang ‚s goroutines (und Clojure der core.async ) und der Schauspieler Modell in Scala Akka - Toolkit)

Ich versuche, eine einfache Liste der Unterschiede zwischen dem Actor Model und dem CSP zu erstellen. Bisher habe ich:

Ist das richtig? Fehlt mir etwas?

Annahmen

  • Wenn ich "Actor Model" sage, meine ich die theoretische Grundlage für die Implementierung in Scalas Akka-Framework
Falkenauge
quelle
Ein großer Punkt: In CSP-Nachrichtenübermittlung ist synchron; In Actors ist die Nachrichtenübergabe asynchron.
Dave Clarke
@hawkeye Was halten Sie für "das" Schauspieler-Model? Seit seiner informellen Beschreibung sind viele Formalisierungen mit etwas anderen Eigenschaften aufgetaucht.
Martin Berger
@Martin - das ist hilfreich. Ich habe meine Annahmen aktualisiert. Vielleicht können Sie mir helfen, den "einen zu finden, den ich suche"
Hawkeye
@hawkeye Was meinst du mit dem Akka-Modell? Nur der Schlüsselberechnungsmechanismus oder auch das Framework für verteilte Überwachung / Fehlerbehandlung?
Martin Berger
@MartinBerger nur der Schlüssel Rechenmechanismus
Hawkeye

Antworten:

6

Hier ist, wie ich denke, Erlang funktioniert. Ich glaube Akka ist sehr ähnlich.

Jeder Prozess verfügt über ein einzelnes Postfach. Nachrichten werden vom Absender in die Mailbox des Empfängers gestellt und vom Empfänger mithilfe von Pattern Matching abgerufen. Dieser Abgleichsprozess kann die Nachrichtenreihenfolge in dem Sinne ändern, dass die älteste Nachricht in einer Mailbox möglicherweise nicht übereinstimmt, eine jüngere jedoch. In diesem Fall wird der jüngere zuerst konsumiert. Ansonsten bleibt die Nachrichtenreihenfolge erhalten.

ππ

Martin Berger
quelle