我正在尝试从ErlNNTP中理解这一段管理员代码,即使在start-child(http://www.erlang.org/doc/man/supervisor.html#start_child-2)
上阅读了erlang文档(Erlang n00b)之后我也无法理解它start_connection_handler(套接字) - > 主管:start_child(?MODULE,{Socket,{connection_handler,start_link,[Socket]},permanent,10000,worker,[connection_handler]})。
我没有得到'Socket'参数,我希望它是一个SupRef。我显然没有正确解析参数列表或理解调用。任何人都可以向我解释一下吗?
答案 0 :(得分:0)
supervisor:start_child/2
的第二个arg是一个格式为:
{Id,StartFunction,RestartType,Shutdowntime,ProcessType,Modules}
,其中
Id
是主管中唯一的子标识符,可以是任何数据类型。
StartFunction
是一个元组{Module,Function,Args}
,它是启动子进程的调用。
RestartType
告诉主管如何重启这个孩子,它可以包含值permanent
,transient
或temporary
。
ShutdownTime
是允许子进程在终止之前花费多少才能终止。
ProcessType
孩子是worker
还是supervisor
。
Modules
实施孩子的模块列表
代码升级时使用最后两个。
因此,在您的情况下Socket
被用作标识符。这样做意味着当您为新套接字启动处理程序时,您将获得唯一标识符。