6

Erlang 文档说明了以下关于 gen_servers 的内容:

...

请注意,由于正常、关闭或 {shutdown,Term} 之外的任何其他原因,假定 gen_server 由于错误而终止,并使用 error_logger:format/2 发出错误报告。

来源:http ://www.erlang.org/doc/man/gen_server.html#Module:terminate-2


由于除了这三个原因之外的任何其他原因都被视为错误,因此我推断出原因normalshutdown并且{shutdown, Reason}被视为正常行为。

我想开发人员在选择在正常情况下停止 gen_server 的这三个原因时是有动机的,但我不太确定如何确定使用哪一个。

那么我应该什么时候使用normal,shutdown{shutdown, Reason}

4

1 回答 1

9

normal如果您的服务器已完成工作并正常终止,您应该使用。

shutdown并且{shutdown, Reason}当他们告诉他们的孩子终止时被主管进程使用(例如,整个应用程序正在终止或监管树中的另一个进程已经死亡,这是一个 one_for_all 主管)。

normal用于所有预期的终止和{error, ErrorDescription}意外的终止。

于 2012-04-04T19:41:28.857 回答