2012-10-15 5 views
5

Ich bin ein Neuling mit dem Schauspieler-Modell. Könnte jemand bitte den Lebenszyklus eines Schauspielers im Schauspielermodell erklären? Ich habe nach der Antwort in der Dokumentation gesucht, aber ich konnte nichts zufriedenstellendes finden.Lifecyle eines Akteurs in Schauspieler-Modell

Ich bin daran interessiert, was ein Schauspieler tut, nachdem er die onReceive() Methode abgeschlossen ist - ist es immer noch am Leben oder ist es tot? Können wir seine Lebenszeit kontrollieren, um zu sagen "stirb nicht, warte dort auf die nächste Botschaft"? Zum Beispiel mit einem Router Round-Robin, wenn ich es Set 5 Schauspieler zu haben - es wäre immer die Arbeit über die gleichen 5 Akteure verteilen? Oder Schauspieler werden zerstört und erstellt jederzeit eine Nachricht, aber die maximale Grenze ist immer 5.

Dank!

Antwort

7

Die Actor ist immer am Leben, wenn Sie explizit „kill“ es (oder stürzt irgendwie). Wenn es eine Nachricht empfängt, wird es einen Thread "verwenden", die Nachricht verarbeiten und dann in einen "Leerlauf" -Zustand zurückkehren. Wenn es eine andere Nachricht empfängt, wird es wieder "aktiv".

Im Falle eines Round-Robin-Router mit 5 Actor s, ist es die gleichen 5 Actor s - der Router keine neuen schafft jedes Mal, wenn eine Nachricht an den Router gesendet wird. Das Actor-Modell folgt einem Modell der "isolierten Mutabilität" (Concurrency) - es kapselt den Zustand nur für sich selbst ein - andere können diesen Zustand nicht direkt berühren, sie können nur über Message Passing mit ihm interagieren. Die Actor s muss „lebendig“ sein, um den Zustand zu halten.