有人能解释一下Erlang中Pid的结构吗?


Answers

如果我没记错,格式为<nodeid,serial,creation> 。 0是当前节点,很像计算机总是有主机名“localhost”来引用它自己。 这是旧的记忆,所以它可能不是100%正确的强硬。

但是,是的。 例如,您可以使用list_to_pid/1构建pid。

PidString = "<0.39.0>",
list_to_pid(PidString) ! message.

当然。 您只需使用您需要的任何方法来构建PidString。 可能会编写一个生成它的函数,并使用它而不是像这样的PidString:

list_to_pid( make_pid_from_term({proc_name, Node}) ) ! message
Question

有人能解释一下Erlang中Pid的结构吗?

Pids看起来像这样: <ABC> ,例如<0.30.0>,但我想知道这三个“位”的含义是什么:A,B和C.

本地节点上的“A”似乎始终为0,但当Pid的所有者位于另一个节点上时,此值会更改。

是否可以仅使用Pid直接在远程节点上发送消息? 这样的事情:<4568.30.0>! 消息,无需明确指定已注册进程的名称和节点名称({proc_name,Node}!Message)?




PID指的是进程和节点表。 因此,如果在您进行呼叫的节点中已知消息,则只能将消息直接发送到PID。

如果您执行调用的节点已经知道正在运行该进程的节点,则这可能会起作用。




Related



Tags

erlang   pid