Getting locks and sharing: was RE: Getting concurrency
Richard A. O'Keefe
Tue Jun 21 07:36:05 CEST 2005
"Ulf Wiger (AL/EAB)" <ulf.wiger@REDACTED> wrote:
[quotation 1, careful analysis showing that it doesn't
imply that local messages are reliable]
[quotation 2, careful analysis showing that it doesn't
imply that local messages are reliable either]
In practice, if you really need to make sure that a message
has arrived, you must wait for explicit acknowledgement.
However, it is commonly assumed that if a process is alive,
a local message will reach it.
There's that terminally cute saying that "assume" makes an ASS out of
U and ME.
It would be difficult to imagine the system not being able to
deliver messages to a healthy process using local communication.
What's a healthy process? How can the message delivery code tell whether
a process is healthy quickly enough for knowing to be useful?
also extend to EXIT messages sent to supervisor processes?
If so, supervision cannot be relied upon.
I don't need to tell you that there *automatically* generated EXIT
messages might be more reliable than programmer-generated ones. If there
is a rule that prevents supervision across node boundaries, I have failed
to notice or understand it, in which case supervision does have trouble.
> to the detriment of other processes UNLESS at some point
> messages are discarded.
I may be wrong, but I don't think the Erlang VM does that.
There is more than one Erlang implementation, although the "real" one
does have a habit of advancing faster than the others could keep up.
(E2S, GERL, ...) If it's not promised explicitly somewhere, we can't
rely on future Erlang implementations happening to miss the same
More information about the erlang-questions