0

私は ErlNNTP からのスーパーバイザー コードのこのビットを理解しようとしていますが、start-child ( http://www.erlang.org/doc/man /supervisor.html#start_child-2 )

start_connection_handler (ソケット) -> スーパーバイザー:start_child (?MODULE, {Socket, {connection_handler, start_link, [Socket]}, permanent, 10000, worker, [connection_handler]})。

SupRef であるはずの 'Socket' パラメータを取得できません。明らかに、パラメーター リストを正しく解析していないか、呼び出しを理解していません。誰かが私にそれを説明できますか?

4

1 に答える 1

0

2 番目の引数 tosupervisor:start_child/2は、次の形式の子仕様です。

{Id,StartFunction,RestartType,Shutdowntime,ProcessType,Modules}

どこ

  • Idスーパーバイザー内で一意の子の識別子であり、任意のデータ型にすることができます。

  • StartFunction{Module,Function,Args}子プロセスを開始するための呼び出しであるタプルです。

  • RestartTypeこの子を再起動する方法をスーパバイザに伝えます。値permanentは 、transientまたはtemporaryです。

  • ShutdownTime強制終了される前に、子プロセスが終了に費やすことができる量です。

  • ProcessType子がworkerまたはであるかどうかsupervisor

  • Modules子を実装するモジュールのリスト

最後の 2 つは、コードのアップグレード時に使用されます。

したがって、あなたの場合Socketは識別子として使用されています。このようにすると、新しいソケットのハンドラーを開始すると、一意の識別子が取得されます。

于 2013-02-23T19:49:35.277 に答える