在erlang中注册全局和本地主管之间的区别是什么

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在erlang中注册全局和本地主管之间的区别是什么相关的知识,希望对你有一定的参考价值。

我是erlang的新手,我正在看一些关于启动主管http://erlang.org/doc/man/supervisor.html#start_link-3的文档

start_link / 3函数可能返回

{local, Name :: atom()} |
{global, Name :: atom()} |

文件说:

If SupName={local,Name}, the supervisor is registered locally as Name using register/2.
If SupName={global,Name}, the supervisor is registered globally as Name using global:register_name/2.

在本地注册与全球注册意味着什么?

答案
  • local:仅为本地节点注册pid,如果您有Erlang集群,则可以在其他节点上使用相同的名称。
  • global:为您的所有Erlang集群注册此名称,并向每个节点提醒该名称。

来自global:register_name/3

将新节点添加到网络时,会通知他们已存在的全局注册名称。还向网络通知新连接节点中的任何全局名称。如果发现任何名称冲突,则调用函数Resolve。其目的是确定哪个pid是正确的。如果函数崩溃,或返回除其中一个pid之外的任何内容,则该名称将被取消注册。每个名称冲突都会调用一次此函数。

启动流程时,此功能适用于所有标准OTP行为。

以上是关于在erlang中注册全局和本地主管之间的区别是什么的主要内容,如果未能解决你的问题,请参考以下文章

Erlang主管:simple_one_for_one和one_for_one重启策略之间的区别

无法从 shell 生成 erlang 主管

数据库 - 本地逻辑数据库模型和全局逻辑数据库模型之间的区别是什么?

DynamoDB 中本地索引和全局索引的区别

Erlang 主管进程

Erlang 主管有一个关键的孩子