1

私の「学習プロジェクト」の1つに、一連のerlangプロセス(gen_serverを実装するさまざまなモジュール)があります。この各プロセスは、otpの動作を実装していない単一のモジュールで構成される子プロセスを生成および監視します。

したがって、次のような状況になります。

gen_server_a <-> module_a
gen_server_b <-> module_b
gen_server_c <-> module_c

各子プロセスは同じ一連のことを行います。

  1. モジュールの名前で自分自身を登録します(例:module_a)
  2. スポーン中に親から渡された構成パラメーターに基づいて一部の操作を実行します
  3. 登録された名前を使用して親からコマンドを受信します

今、私はこれが完璧にはほど遠いことを知っています。まだ3つのgen_serversを持つためにアーキテクチャを抽象化したいのですが、次のようなことを実現できるように、子部分のビームファイルは1つだけです。

gen_server_a <-> module_generic (registered as module_a)
gen_server_b <-> module_generic (registered as module_b)
gen_server_c <-> module_generic (registered as module_c)

どうすればこのようなことを達成できますか?プロセスの登録に使用されるアトムの生成中に通過するだけですか?他に選択肢はありますか?

4

1 に答える 1

3

プロセス関数を生成し、Pidを登録するmodule_generic独自のビルドでは、次のようになります。start_link/1

  start_link(Name) ->
    Pid = spawn_link(?MODULE, loop, []),
    register(Name, Pid),
    Pid.
于 2013-01-29T11:09:45.740 に答える