Dokumentation sagt, dassSind Erlang-Referenzen zwischen Knoten/VM-Neustarts eindeutig?
make_ref() -> ref()
eine nahezu eindeutige Referenz zurück.
Die zurückgegebene Referenz wird nach etwa 2 Aufrufen wieder auftreten; daher ist es einzigartig genug für praktische Zwecke.
Aber meine Augen sagen mir, dass zwischen VM neu gestartet ich leicht die gleiche ref bekommen konnte:
[~] 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>
So, wie einzigartig Erlang Refs sind? Sind sie geeignet, um als eindeutiger "Tag" -Generator verwendet zu werden, wenn Tags in mq oder db persistent sind und von verschiedenen VM-Sitzungen generiert werden können.
Ich weiß, dass UUIDs dafür verwendet werden könnten. Es ist auch bekannt, dass pids() wiederholbar, wiederverwendbar und keineswegs eindeutig ist, wenn sie serialisiert und dann aus dem persistenten Speicher geladen werden.
Frage ist, was sind refs() - eher wie UUIDs oder mehr wie pids()? Sind refs() eindeutig zwischen Knoten? Zwischen Neustarts? Gibt es offizielle Informationen zu diesem Thema?