I echo with earlier suggestion that we should stop using the term
"causality", "causal order", "causal consistency", "causal memory" etc for
the CnC model. Because this will only unnecessarily confuse more people,
especially those who just joined in.
The term "causal" has been well defined in the paper "Causal Memory:
Definitionis, Implementation and Programming" by Ahamad, Neiger, Burns,
Kohli, and Hutto. These terms have been widely adopted in memory model
literatures. One of the key requirement there is that a happens-before
edge (what they call the "write-into order") would be established between
a write and the read it feeds. Then for each thread, there must be a
total order following the transitive closure of "write-into" order and
program order among all operations from that thread and all write
operations from all other threads. In CnC, there's no such
"write-into" ordering edges. There's also no per-thread total order
The "causal" part of CnC, as I gather, is to prevent the "causal loop"
effect, which produces some value "out of thin air" via the interaction of
local variables, branch conditions, and the shared memory. This is a new
challenge for JMM because previous models either don't consider branches
and local variables, or they are strong enough such that this phenomenon
didn't show up.
So I suggest we can call this "causal loop consistency".
JavaMemoryModel mailing list - http://www.cs.umd.edu/~pugh/java/memoryModel
This archive was generated by hypermail 2b29 : Thu Oct 13 2005 - 07:00:49 EDT