Beide Funktionen beginnen neue gen_server
Instanzen als Kinder des anrufenden Prozess, aber sie unterscheiden sich dadurch, dass die gen_server:start_link/3,4
atomar a beginnt gen_server
Kind und Links sie an ihre Mutter Prozess. Verlinkung bedeutet, dass das Elternteil standardmäßig stirbt, wenn das Kind stirbt. Supervisors sind übergeordnete Prozesse, die Verknüpfungen verwenden, um bestimmte Aktionen auszuführen, wenn ihre untergeordneten Prozesse abnormal beendet werden, indem sie normalerweise neu gestartet werden.
Anders als die Verknüpfung im Fall gen_server:start_link
beteiligt ist, gibt es keine Multi-Prozess-Aspekte in diesem Anruf beteiligt. Unabhängig davon, ob Sie gen_server:start
oder gen_server:start_link
, um ein neues gen_server
zu starten, der neue Prozess hat eine einzelne Nachrichtenwarteschlange und es empfängt und verarbeitet diesen Nachrichten einen nach dem anderen. Es gibt nichts über gen_server:start_link
, das dazu führt, dass sich der neue gen_server
-Prozess anders verhält oder ausführt als beim Starten mit gen_server:start
.
Bitte siehe bearbeiten Steve. –
Ich habe bereits beantwortet, was in Ihrer Bearbeitung ist. Wenn mehrere Prozesse Ihren "gen_server" gleichzeitig aufrufen, werden ihre Nachrichten in der Nachrichtenwarteschlange "gen_server" in die Warteschlange gestellt, und der "gen_server" verarbeitet diese Nachrichten nacheinander. –