Imprimé id de processus < A. B. C > sont composés de 6:
- Un, le numéro de nœud (0, c'est le local
nœud, un nombre arbitraire d'un nœud distant)
- B, les 15 premiers bits du numéro de processus (un index dans la table de processus) 7
- C, les bits 16 à 18 du numéro du processus (le même numéro de processus B) 7
En interne, le numéro de processus est de 28 bits de large sur la 32 bits de l'émulateur. L'étrange définition de a, B et C vient de R9B et les versions antérieures d'Erlang dans laquelle B est un 15bit ID de processus et C était un enveloppement au compteur incrémenté lorsque le max ID de processus a été atteint et inférieure de l'IDs ont été réutilisés.
Dans la de distribution d'erlang PIDs sont un peu plus gros car ils comprennent le nœud de l'atome ainsi que les autres informations. (Distribué PID format)
Lorsqu'un interne PID est envoyé à partir d'un nœud à l'autre, il est automatiquement converti en externe/distribué PID forme, de sorte que ce qui pourrait être <0.10.0>
(inet_db
) sur un nœud peut finir en <2265.10.0>
lors de l'envoi vers un autre nœud. Vous pouvez envoyer ces Pid que la normale.
% get the PID of the user server on OtherNode
RemoteUser = rpc:call(OtherNode, erlang,whereis,[user]),
true = is_pid(RemoteUser),
% send message to remote PID
RemoteUser ! ignore_this,
% print "Hello from <nodename>\n" on the remote node's console.
io:format(RemoteUser, "Hello from ~p~n", [node()]).
Pour plus d'informations, voir: Interne PID structure,
La création d'un nœud de l'information,
La création d'un nœud compteur d'interaction avec EPMD