Mark S. Miller (2013-11-12T20:46:34.000Z)
domenic at domenicdenicola.com (2013-11-17T18:09:50.453Z)
On Tue, Nov 12, 2013 at 11:23 AM, Jason Orendorff <jason.orendorff at gmail.com> wrote: > I don't think it does in practice, any more than UNIX does. How does a > UNIX admin (or the kernel) decide when to kill a process? Good question. How do they? > A pid doesn't keep the referred-to process alive. A pid has no effect > at all on the process it addresses, local or remote. Same thing with a remote "strong" reference in any of the distributed GC systems I mention. The owner of the machine on which a hosting process or vat is running can still shut down the vat, whether it hosts objects remotely referred to or not. These remote references do not "keep" the object alive. The distributed GC protocols are merely a way for the client to inform the host, if it wishes, that it is no longer interested. It is up to the client whether it wishes to tell the host about such a lack of interest. It is up to the host how to react to such reports of lack of interest. A host that takes down an object or a vat prior to such reports of disinterest may be disrupting clients, but that's its decision. Likewise with terminating an Erlang process. The difference is only whether there's a standard way for a client to inform a host that it should no longer worry about disrupting this client if it takes down a particular object. So I put scare quotes around "strong" above because I'm not sure whether you'd call them strong. I don't see any basis for considering them to be "stronger" than an Erlang pid.