相关疑难解决方法(0)

erlang refs在节点/ VM重启之间是唯一的吗?

文档说

make_ref() -> ref()  
Run Code Online (Sandbox Code Playgroud)

返回一个几乎唯一的引用.

返回的参考将在大约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()是否唯一?重启之间?有关于这个主题的官方信息吗?

erlang uuid ref

6
推荐指数
2
解决办法
995
查看次数

标签 统计

erlang ×1

ref ×1

uuid ×1