Erlang 唯一的主管/服务器名称
我有一个监控结构,每个(TCP)连接需要一个监控。现在似乎每个主管都需要自己的唯一名称,而这个名称又需要是一个atom(至少我从错误消息中收集到了这个名称) 一种解决方法是每次生成一个新原子,类似于Erlang 唯一的主管/服务器名称,erlang,otp,erlang-supervisor,Erlang,Otp,Erlang Supervisor,我有一个监控结构,每个(TCP)连接需要一个监控。现在似乎每个主管都需要自己的唯一名称,而这个名称又需要是一个atom(至少我从错误消息中收集到了这个名称) 一种解决方法是每次生成一个新原子,类似于 现在我了解到原子永远不会被清理,所以有可能被太多的连接所污染,耗尽原子空间。这是如何正确完成的?这里涉及两种类型的名称,进程的注册名称和主管子级的标识符 没有必要为每个主管流程指定注册名称。启动主管流程有两个功能start\u-link/3启动主管并在给定名称下注册,而start\u-link/2启
现在我了解到原子永远不会被清理,所以有可能被太多的连接所污染,耗尽原子空间。这是如何正确完成的?这里涉及两种类型的名称,进程的注册名称和主管子级的标识符 没有必要为每个主管流程指定注册名称。启动主管流程有两个功能
start\u-link/3
启动主管并在给定名称下注册,而start\u-link/2
启动主管而不注册名称。(如果进程没有注册名称,则只能通过其pid来引用它。)
至于监管者子进程的标识符,如果您有一个监管者将拥有无限数量的子进程(无论这些子进程是工作进程还是监管者),您通常会使用特殊的重启类型
simple\u one\u for\u one
。这意味着,与保留静态子规范列表(从init
回调函数返回或添加supervisor:start\u child
函数)不同,supervisor有一个“模板”子规范,该函数创建“匿名”基于该模板的子级。此处涉及两种类型的名称,进程的注册名称和主管子级的标识符
没有必要为每个主管流程指定注册名称。启动主管流程有两个功能start\u-link/3
启动主管并在给定名称下注册,而start\u-link/2
启动主管而不注册名称。(如果进程没有注册名称,则只能通过其pid来引用它。)
至于监管者子进程的标识符,如果您有一个监管者将拥有无限数量的子进程(无论这些子进程是工作进程还是监管者),您通常会使用特殊的重启类型simple\u one\u for\u one
。这意味着,与保留静态子规范列表(从init
回调函数返回或添加supervisor:start\u child
函数)不同,supervisor有一个“模板”子规范,该函数基于该模板创建“匿名”子规范