2016-09-20 6 views
1

In Erlang, wenn ich gen_server Modul von start_link (A) starten, die einen Parameter enthält, kann ich es nicht zweimal starten, indem Sie A ändern. Auf der Konsole zeigt {Fehler, {bereits gestartet, < 0.61.0>}}. Wie kann ich das Problem lösen? Danke!Wie man Gen_Server Modul viele Male

Antwort

4

Wahrscheinlich Ihre start_link Aufruf sieht etwa so aus:

gen_server:start_link({local, foo}, bar, [], []) 

Das bedeutet, starten Sie eine gen_server bar als Callback-Modul verwendet wird, und registrieren Sie den neuen Prozess mit dem Namen foo auf dem lokalen Knoten. Wenn bereits ein Prozess mit dem Namen foo vorhanden ist, wird der Fehler already_started angezeigt.

Um einen gen_server ohne registrierten Namen zu beginnen, was es ermöglicht, eine beliebige Anzahl von ihnen zu beginnen, werfen Sie einfach das erste Argument:

gen_server:start_link(bar, [], []) 
+0

Wenn Sie benannte Server möchten, können Sie '{local, list_to_atom ("foo" ++ integer_to_list (N)) ' –

Verwandte Themen