In Erlang, wie wird mit registrierten Prozesse unterscheiden sich von globalen Variablen in einer traditionellen Sprache?

StackOverflow https://stackoverflow.com/questions/2312577

  •  22-09-2019
  •  | 
  •  

Frage

Für mich scheinen sie die gleiche Sache zu sein, es ist nur, dass registrierte Prozesse durch die Terminologie getarnt „Schauspieler“.

Update:

Ich habe seit dem Fehler in meiner Denkweise gesehen. Ich denke, wie ich zu Erlang Ich bin hier wurde mit Schauspielern an Orten, wo sie überhaupt nicht der Fall war, gehören (gibt es ein Anti-Muster Name für diese irgendwo?)

War es hilfreich?

Lösung

Ich sehe häufig Beispiele Prozess Registrierung mit dem Beispiel-Code zu vereinfachen (durch einen anderen Funktionsparameter zu vermeiden). Dies hat den Effekt, dass Neulinge Verwendung Prozess Registrierung neigen dazu, eine ganze Menge (Affe sieht, Affen tun).

Und sie (Newbies) neigen dazu, die Registrierung als Teil des normalen Betriebes zu ändern. Sie neigen dazu, Atom zu konstruieren, wie zu registrieren und haben andere Prozesse Konstrukt Atom Prozesse zu suchen. Wenn Sie dies tun, dann gemeinsam genutzten Zustand Gleichzeitigkeit Sie haben (begrenzt, aber immer noch schlecht).

Die Registrierung soll verwendet werden (okay, das sind meine eigenen Regeln dafür, wann sie verwenden):

  • lang laufende Dienste. Dann ist es so viel globalen Zustand, wie wenn Sie auf eine konstante beziehen, wie die Lichtgeschwindigkeit.
  • Prozesse Registrierung eines laufenden Systems unterstützen Debuggen, aber diese Namen sollten nie durch Code verwiesen werden, nur durch den Menschen an der Shell

Die registrierten Namen sollte ein Präfix haben (in der Regel der Name der Anwendung) und die lang laufende Anwendungen in der OTP .app Datei sein sollte.

Andere Tipps

Registrierte Prozesse sind globale Bezeichner zu einer Prozess-ID (PID), die sich eine globale Art und Weise ist es, ein Verfahren zur Adresse (es ist nur unbekannt vorher).

Allerdings sagen, dass eine globale Kennung verwendet, ist das gleiche wie eine globale Variable, die Frage eine ganze verdammt viel ist conflating. Es ist ähnlich, etwas zu sagen wie ‚URIs sind globale Variablen‘. Es gibt grundlegende Unterschiede in Bezug auf Umfang, Wandelbarkeit, Verkapselung und Isolierung von Daten, die sie wirklich von anderen unterscheiden.

Beachten Sie, dass der Schauspieler Modell ein allgemeines Konzept über die gleichzeitige Berechnung ist. Erlang Prozesse sind nur eine von vielen möglichen Weg, um einen Schauspieler-Modell zu implementieren. Scala, E, Axum und viele andere Sprachen unterstützen mit Akteuren der Programmierung, aber die Implementierungen sind ziemlich unterschiedlich.

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