erlang 已连接节点上衍生的进程获得相同的PID

rlcwz9us  于 2022-12-08  发布在  Erlang
关注(0)|答案(1)|浏览(208)

我有四个Erlang节点一起工作在多进程应用程序上。在我的顺序中,一个进程是监视,它画出进程在区域上的位置,另外三个节点处理进程的位置和移动。在监视器上,我使用ETS数据库来存储位置,当关键字是进程PID时。我注意到节点创建了具有相同PID的进程,这显然会中断整个系统的管理。
我已尝试将进程与以下内容连接:

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

我希望当节点将意识到对方,他们将给予不同的PID,但没有工作。

pu82cl6c

pu82cl6c1#

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

相关问题