Thanks, guys. I didn't even consider using global... it will actually suit me even better!<br><br><div><span class="gmail_quote">On 8/16/06, <b class="gmail_sendername">Ulf Wiger (TN/EAB)</b> <<a href="mailto:ulf.wiger@ericsson.com">
ulf.wiger@ericsson.com</a>> wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Scott Lystig Fritchie wrote:<br>><br>> (**) I don't know exactly what 'global' does in cases of
<br>> network partition, but I guess that it will register the<br>> global name on each side of the partition.  (?)<br><br>First of all global will most likely remove any registration<br>where the pid is from the node(s) that were lost during
<br>the network partition. The application may detect the<br>nodedown too, and register another pid with global.<br><br>When nodes reconnect, global has a default conflict<br>resolution method that is pretty draconic: whenever
<br>two pids are found to be registered with the same<br>global name, global picks one pid at random and performs<br>exit(P, kill) on it.<br><br>When registering a name, one may select another conflict<br>resolution method, using
<br><br>  global:register_name(Name, Pid, Method)<br><br>The methods provided by global are<br>- {global, random_exit_name} which is the default<br>- {global, random_notify_name}<br>- {global, notify_all_name}<br><br>Notes:
<br><br>- Global performs no check to see whether Method<br>  actucally succeeded, or whether it is even a<br>  callable function<br>- Global simply does catch Method(Name, Pid1, Pid2)<br>  which in the default case means
<br>  catch {global, random_exit_name}(Name, P1, P2)<br>  When providing your own method, it would be<br>  more stylish to use a fun, I think.<br><br>BR,<br>Ulf W<br></blockquote></div><br>