2016-10-25 5 views
2

私はエリクシルの完全な初心者です。の子をいくつか持つことができるスーパーバイザを作成するために、エリクシルのプログラミングの例に触発されました。私は多分、私は上司の使用状況を誤解し、各プロセスのスーパーバイザーを作成する必要がエラースーパーバイザの複数の子供

{:error, {{:EXIT, {{:badmatch, {:error, {:already_started,#PID<0.122.0>}}},... 

を得ました。

この場合、監督者の正しい使い方を誰に教えてもらえますか?

+1

エラーを投げたコードも含めることができますか? – Dogbert

+0

'simple_one_for_one'タイプのスーパーバイザを調べると、1つの子を定義できますが、いくつかの子を動的に生成することができます。 – vfsoraki

答えて

5

(私はエリクサーをしないので、これはすべてのErlangの構文を使用しています)

スーパーバイザは気にしない、同じタイプ

の何人かの子供を持つことができスーパーバイザを作成します子どもの「タイプ」(あなたが使っているという意味で)。子の仕様には、0​​、startの機能、およびあなたの質問には関係のないいくつかのものが含まれています。

ただし、idが異なる場合は、複数の子供に同じstart機能を使用できます。

私はあなたの子供がという名前がであることが問題であると考えています。すなわち、あなたのinit関数では、と呼ばれ、{local, ?MODULE}のようなものを渡しています。これらのプロセスはすべて同じ名前で登録しようとしますので、already_startedエラーが発生します。

+0

あなたは正しいと思っていますが、作業者作成の名前を無効にしようとしましたが、うまくいかないようです。どうもありがとうございます :) – knotito

関連する問題