我有四个Erlang节点一起工作在多进程应用程序上。在我的顺序中,一个进程是监视,它画出进程在区域上的位置,另外三个节点处理进程的位置和移动。在监视器上,我使用ETS数据库来存储位置,当关键字是进程PID时。我注意到节点创建了具有相同PID的进程,这显然会中断整个系统的管理。我已尝试将进程与以下内容连接:
net_adm:ping(...). net_kernel:connect(...).
我希望当节点将意识到对方,他们将给予不同的PID,但没有工作。
pu82cl6c1#
PID可以打印为相同的格式,例如<0.42.0>,但这只是一个输出约定:打印本地节点上的PID时,第一个数字为0。如果将此PID发送到另一个节点并在那里打印,则它将打印为<2265.42.0>或类似的数字。PID始终与运行进程的节点的名称相关联,您可以使用node(Pid)提取它。因此,来自不同节点的PID永远不会比较为相等。This answer详细介绍了PID的结构。
<0.42.0>
0
<2265.42.0>
node(Pid)
1条答案
按热度按时间pu82cl6c1#
PID可以打印为相同的格式,例如
<0.42.0>
,但这只是一个输出约定:打印本地节点上的PID时,第一个数字为0
。如果将此PID发送到另一个节点并在那里打印,则它将打印为<2265.42.0>
或类似的数字。PID始终与运行进程的节点的名称相关联,您可以使用node(Pid)
提取它。因此,来自不同节点的PID永远不会比较为相等。This answer详细介绍了PID的结构。