問題タブ [simple-one-for-one]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1840 参照

erlang - simple_one_for_one start_child() は already_started を返します

simple_one_for_oneワーカーを開始するスーパーバイザーがいます。start_child()初めて電話すると、すべてがうまくいきます。しかし、2回目にすると、{error,{already_started,<0.71.0>}}. simple_one_for_oneスーパーバイザーが私に を返すのはなぜalready_startedですか? 私は何が欠けていますか?

コードは次のとおりです

0 投票する
2 に答える
484 参照

erlang - Simple_one_for_oneアプリケーション

simple_one_for_oneの子を開始するスーパーバイザーがいます。実際、各子は独自のツリーを持つスーパーバイザーです。それぞれの子供は一意のIDで始まるので、私はそれらを区別することができます。次に、各gen_serverはstart_link(Id)で開始されます。ここで、

したがって、各gen_serverは{global、{Id、module_name}}で簡単に追加できます。

ここで、この子スーパーバイザーをアプリケーションにします。したがって、私の母のスーパーバイザーは、スーパーバイザーではなくアプリケーションを開始する必要があります。IDをアプリケーションに渡すという一部を除いて、これは簡単なはずです。IDでスーパーバイザーを開始するのは簡単です:supervisor:start_child(?SERVER、[Id])。アプリケーションでそれを行うにはどうすればよいですか?同じ名前の複数のアプリケーションを(同じ.appファイルにアクセスできるように)異なるIDで起動するにはどうすればよいですか(子供をsupervisor:start_child(?SERVER、[Id]))で起動できますか?

私の質問が十分に明確でない場合は、ここに私のコードがあります。したがって、現在、es_simulator_dispatcherはes_simulator_supを開始します。これが欲しいのですが、es_simulator_dispatcherはes_simulator_appを開始し、es_simulator_supはes_simulator_supを開始します。それがすべてです:-)

よろしくお願いします、dijxtra