Erlang 全局和本地名称
Erlang global and local names
为什么local names (registered using erlang:register/2) 只能是原子而不是任意项,但是global 名称可以是任何东西(使用 global:register_name/2,3 注册)。
来自 gen.erl 的类型规范:
-type emgr_name() :: {'local', atom()}
| {'global', term()}
| {'via', Module :: module(), Name :: term()}.
为什么不能给一个localgen_server一个任意的名字?
因为本地注册是 Erlang 的特性(写在 C 上)。
但是全局注册是 OTP 的全局模块的特性。它只是标准行为的扩展。
为什么local names (registered using erlang:register/2) 只能是原子而不是任意项,但是global 名称可以是任何东西(使用 global:register_name/2,3 注册)。
来自 gen.erl 的类型规范:
-type emgr_name() :: {'local', atom()}
| {'global', term()}
| {'via', Module :: module(), Name :: term()}.
为什么不能给一个localgen_server一个任意的名字?
因为本地注册是 Erlang 的特性(写在 C 上)。 但是全局注册是 OTP 的全局模块的特性。它只是标准行为的扩展。