On Thu, Oct 28, 2010 at 8:12 AM, Charles Forsyth <forsyth@terzarima.net> wrote:
you're essentially replacing
       f := open(name, ...)
       ...
       close(f)

which runs as a sequential process, and subject to the usual rules for sequential
composition, by

       f := open(name, ...)
       ...
       spawn clunk(f)

which introduces a race with an invisible anonymous process with no means of synchronisation.

what could possibly go wrong with that?

(actually, it's more complex than spawning a new process, but the added complexity of a set of service processes changes the details but not the existence of the race, and doesn't affect the anonymity.)

Hmm, I don't see the race there; perhaps I'm missing something or being blind; could you explain?

Also, if that is racy, isn't this at least analogous?

f := Sys->open(name, ...);
... # put f in a cyclic structure
f = nil;
evil_cyclic = nil;
... # wait until an invisible service process closes it, perhaps later?

Thanks,
-- vs