文档说
Run Code Online (Sandbox Code Playgroud)make_ref() -> ref()返回一个几乎唯一的引用.
返回的参考将在大约2 82次呼叫后重新发生; 因此它具有足够的实用性.
但我的眼睛告诉我,在VM重启之间,我可以轻松得到相同的参考:
[~] erl
Erlang R14B04 (erts-5.8.5)
1> make_ref().
#Ref<0.0.0.33>
2> make_ref().
#Ref<0.0.0.37>
^C
[~] erl
Erlang R14B04 (erts-5.8.5)
1> make_ref().
#Ref<0.0.0.33>
Run Code Online (Sandbox Code Playgroud)
那么,Erlang的Refs有多独特呢?当标记在mq或db中持久存在并且可能由不同的VM会话生成时,它们是否适合用作唯一的"标记"生成器.
我知道UUID可以用于此.众所周知,pids()是可重复的,可重用的,如果是序列化的,则绝不是唯一的,然后从持久存储加载.
问题是,什么是refs() - 更像是UUID或更像pids()?节点之间的refs()是否唯一?重启之间?有关于这个主题的官方信息吗?