对于一些erlang老兵来说,这可能是一个微不足道的问题但是很高兴知道,因为它在文档中并不清楚。许多分布式系统算法利用独特的pid进行决策的可比性。 Erlang非常友好地提供了pid的内置比较。然而,我在徘徊是否比较在多个机器之间保持一致,指的是本地和外部pids。我的猜测是没有比较保证,但我可能错了,是吗?
答案 0 :(得分:4)
Erlang在其PID结构中存储的不仅仅是一个简单的进程ID;数据包括远程节点的唯一标识符(无论是另一个本地还是远程VM)。
有关详细信息,请参阅Can someone explain the structure of a Pid in Erlang?。
因此,您可以保证不会在错误的VM上向错误的PID发送消息(或者错误解释收到的消息的来源),至少不会在代码中的某处发生错误。
更新:我可能会回答错误的问题。如果您正在询问比较如何工作(例如,如果Pid1< Pid2,无论Pid1是本地的还是远程的),我可以充满信心地说明,基于http://learnyousomeerlang.com/starting-out-for-real#bool-and-compare,排序将是恒定的。