6

Erlang のドキュメントには、gen_servers について次のように記載されています。

...

通常、シャットダウン、または {shutdown,Term} 以外の理由では、gen_server はエラーのために終了すると見なされ、error_logger:format/2 を使用してエラー レポートが発行されることに注意してください。

ソース: http://www.erlang.org/doc/man/gen_server.html#Module:terminate-2


これらの 3 つの理由以外はエラーと見なされるため、理由normal、 、shutdownおよび{shutdown, Reason}が正常な動作と見なされると推測します。

通常の状態で gen_server を停止するこれら 3 つの理由を選択した開発者には何らかの動機があると思いますが、どれを使用するかを決定する方法がよくわかりません。

normalでは、いつ、shutdownおよびを使用する必要があり{shutdown, Reason}ますか?

4

1 に答える 1

9

normalサーバーが作業を終了し、正常に終了している場合に使用する必要があります。

shutdownまた{shutdown, Reason}、スーパーバイザー プロセスが子供に終了を指示するときに使用されます (たとえば、アプリ全体が終了するか、スーパーバイザー ツリー内の別のプロセスが停止し、これが one_for_all スーパーバイザーである場合)。

normal予想されるすべての終了と予期しない終了に使用し{error, ErrorDescription}ます。

于 2012-04-04T19:41:28.857 に答える