Frage

Ich habe festgestellt, dass es auch ein Akka -Schauspielermodell gibt, also frage ich mich, was der Unterschied zwischen dem Schauspieler des Akka und Scalas Schauspielermodell ist.

War es hilfreich?

Lösung

Nun, das gibt es nicht. Es gibt nur Schauspielermodell, und Akka -Schauspieler und Scala -Schauspieler sind zwei Implementierungen von diesem Modell.

Alle Schauspielermodell besagen, dass Ihre Parallelitätsprimitive Akteure sind, die können:

  • Erhalten Sie eine Nachricht und entscheiden Sie, was als nächstes abhängig vom Inhalt der Nachricht zu tun ist, einschließlich:

  • Senden Sie Nachrichten an alle Schauspieler, von denen sie wissen

  • neue Schauspieler erstellen

und bietet bestimmte Garantien, z. B.:

  • Jeder Schauspieler verarbeitet jeweils nur eine einzelne Nachricht

  • Nachrichten, die vom Schauspieler X an den Schauspieler y gesendet werden, werden in der Reihenfolge eintreffen

Es gibt keinen Unterschied zwischen Scala- und Akka -Schauspielern auf dieser Ebene.

Für Unterschiede in dem, was sie tun können, siehe Verschiedene Überblick über Scala -Akteure -Implementierungen. Der größte ist für mich, dass Akka Supervisoren und Schauspieler unterstützt.

Andere Tipps

Es gibt auch eine historische Antwort. Die Schöpfer von Scala dachten, es sollte einen Schauspieler -Rahmen geben. Jonas Bonér probierte es aus, war aber nicht völlig zufrieden, also begann er an einem neuen zu arbeiten - das sich zu Akka entwickelte. Die Scala -Leute hielten es jedoch für besser als ihre eigenen - also kündigten sie bei Jfokus 2011 an, dass Akka der Standard -Schauspieler -Rahmen von Scala werden sollte. Diese Migration wird jedoch einige Zeit dauern.

Dies hängt ein wenig von dem ab, was Sie mit "Modell" meinen - Sie können entweder auf das "Ausführungsmodell" oder das "Programmiermodell" (und vielleicht auch andere Modelle) verweisen.

Für Ausführungsmodelle gibt es im Grunde zwei: Thread-basierte oder ereignisbasierte. Die Scala Standard Actor Library enthält beide. Der Thread-basierte verwendet einen Thread für jeden Schauspieler, während der ereignisbasierte Thread-Pool verwendet. Ersteres ist intuitiver zu verstehen, letzteres ist effizienter. Akka basiert auf dem ereignisbasierten Modell.

Für das Programmiermodell gibt es einen großen Unterschied zwischen der Scala -Standardbibliothek und der Akka. In der Scala -Standardbibliothek implementieren Sie im Grunde die "Run" -Methode - und wenn Sie auf eine eingehende Nachricht warten möchten, bringen Sie sich in einen Wartezustand (indem Sie "Empfangen" oder "React" anrufen). Das Programmiermodell folgt also der "Thread-Metaphor". In AkKA ist die Programmiermetapher jedoch, dass Sie einige Lebenszyklusmethoden implementieren-aber der "Run" -Method ist im Rahmen geschrieben. Es stellt sich tatsächlich heraus, dass dieses Programmiermodell auch mit dem ereignisbasierten Ausführungsmodell viel besser funktioniert.

Wenn Sie an den verschiedenen Ausführungsmodellen und Programmiermodellen von Scala -Standardakteuren interessiert sind, die ich geschrieben habe a wenig Beiträge zu diesem Thema.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top