Erlang 如何启动几个非otp进程并用不同的名称注册它们

Erlang 如何启动几个非otp进程并用不同的名称注册它们,erlang,Erlang,对于我的一个“学习项目”,我有一组erlang进程(实现gen_server的不同模块)。每个进程都生成并监督一个子进程,该子进程包含在一个不实现otp行为的模块中 因此,我有以下情况: gen_server_a <-> module_a gen_server_b <-> module_b gen_server_c <-> module_c gen\u服务器a模块a 发电机服务器模块 发电机服务器模块 每个子进程执行相同的一组操作: 用模块名称注册自身(例

对于我的一个“学习项目”,我有一组erlang进程(实现gen_server的不同模块)。每个进程都生成并监督一个子进程,该子进程包含在一个不实现otp行为的模块中

因此,我有以下情况:

gen_server_a <-> module_a
gen_server_b <-> module_b
gen_server_c <-> module_c
gen\u服务器a模块a
发电机服务器模块
发电机服务器模块
每个子进程执行相同的一组操作:

  • 用模块名称注册自身(例如模块a)
  • 基于父级在繁殖期间传递的配置参数执行某些操作
  • 使用父级的注册名称从父级接收命令
  • 现在,我知道这还远远不够完美。我想对架构进行抽象,以便仍有3台gen_服务器,但子部分只有一个beam文件,这样我就可以实现以下功能:

    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)
    
    gen\u服务器\u a模块\u通用(注册为模块\u a)
    发电机服务器模块通用(注册为模块)
    发电机服务器c模块通用(注册为模块c)
    

    我怎样才能做到这一点?只是在生成过程中传递一个用于注册进程的原子?是否有其他选项?

    模块\u generic
    中构建自己的
    启动链接/1
    ,该链接生成流程功能,然后注册Pid:

      start_link(Name) ->
        Pid = spawn_link(?MODULE, loop, []),
        register(Name, Pid),
        Pid.