0

我注意到牛仔https://github.com/extend/cowboy中有如下代码

supervisor:start_child(cowboy_sup, child_spec(Ref, NbAcceptors,
    Transport, TransOpts, Protocol, ProtoOpts)).

child_spec(Ref, NbAcceptors, Transport, TransOpts, Protocol, ProtoOpts) ->  
{{cowboy_listener_sup, Ref}, {cowboy_listener_sup, start_link, [ NbAcceptors, Transport,
TransOpts, Protocol, ProtoOpts ]}, permanent, 5000, supervisor,[cowboy_listener_sup]}.

http://www.erlang.org/doc/man/supervisor.html#start_child-2

我不认为这是正确的儿童规格,你怎么看?

4

1 回答 1

4

您可以使用supervisor:check_childspecs/1函数来验证子规范的正确性。

是的,这看起来像是一个有效的子规范:

child_spec() = 
    {Id :: child_id(),
     StartFunc :: mfargs(),
     Restart :: restart(),
     Shutdown :: shutdown(),
     Type :: worker(),
     Modules :: modules()}

在哪里:

Id -> {cowboy_listener_sup, Ref}
StartFunc -> {cowboy_listener_sup, start_link, [ ... ]}
Restart -> permanent
Shutdown -> 5000
Type -> supervisor
Modules -> [cowboy_listener_sup]

究竟有什么疑问?

于 2012-04-11T10:57:27.773 回答