在连接的节点上生成的进程获得相同的PID

时间:2014-07-25 13:58:49

标签: erlang

我有4个erlang节点在多进程应用程序上一起工作。 在我的订单中,一个进程是监视器,它在区域上绘制进程的位置,另外3个节点处理进程的位置和移动。 在监视器上,当密钥是进程PID时,我使用ETS数据库存储位置, 我注意到节点创建的进程具有相同的PID,这显然会中断整个系统的管理。

我尝试将流程连接到:

net_adm:ping(...).
net_kernel:connect(...).

希望当节点相互了解时,他们会给出不同的PID,但是没有用。

1 个答案:

答案 0 :(得分:6)

PID可以打印相同,例如<0.42.0>,但这只是一个输出约定:本地节点上的PID打印时,第一个数字为0。如果您将此PID发送到另一个节点并在那里打印,它将打印为<2265.42.0>或类似。 PID始终与运行进程的节点的名称相关联,您可以使用node(Pid)来提取它。因此,来自不同节点的PID永远不会相等。

This answer详细介绍了PID的结构。