Erlang: Betreuer(3), das hinzufügen eines Kind-Prozesses
Wo finde ich Beispiel beschreibt, wie Sie dynamische untergeordnete Prozesse, die zu einem vorhandenen supervisor (simple_one_for_one
Neustart-Strategie) ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich einige der Forschung, und unten ist das, was ich habe.
Erste, dies ist ein Beispiel-callback-Modul-Betreuer:
- Und das ist ein callback-Modul eines Kindes, die Hinzugefügt werden, um die suprervision Baum dynamisch:
Dies ist, wie wir beginnen in der Regel die Betreuerin:
Nun beginnen wir unsere erste Kind-Prozess:
Können Sie dynamisch starten von child-Prozessen; beginnen wir ein weiteres Kind:
Können Sie sehen, dass unsere Prozesse haben (Hinweis: die letzten beiden):
Nun wollen wir unser erstes Kind Prozess etwas tun:
So weit, So gut. Jetzt machen wir unser erstes Kind zu bewerten, einige schlechte-code:
In den Bericht können Sie sehen, dass die division durch null verursacht eine Ausnahme, und der Prozess wurde beendet. Aber der Betreuer kümmert sich um Sie, und sofort beginnt ein anderes Kind-Prozess (Hinweis: die Letzte Zeile).
Können wir damit überprüfen, um sicherzustellen, dass das andere Kind Prozess, den wir begonnen, die zuvor noch lebendig (Hinweis:
<0.37.0>
):Können wir ihn sogar dazu bringen, etwas zu tun für uns:
Folgenden sind die Erlang-manual pages, die Sie wollen, um zu Lesen:
supervisor:start_child(ch_sup, []).
werde ich den Beitrag editieren. Eine wichtige Sache zu erwähnen: Ihr Kind sollte immer einen link zu den Vorgesetzten, das ist der Grund, warum ich verwendetgen_server:start_link
im Kindes-start-Funktion, nicht nurgen_server:start
; ansonsten Betreuer hätte keine Möglichkeit zu wissen, ob seine Kinder-Prozesse ausgeführt werden oder beendet werden (normal oder abnormal).In Vorgesetzten Verhalten Abschnitt der OTP-Design-Prinzipien Teil der Erlang-docs gibt es ein Beispiel, wie
simple_one_for_one
und dynamische Kinder. Ich empfehle, den gesamten Design-Prinzipien Teil, denn es bietet viel Einblick in die Funktionsweise von OTP funktioniert.