Programs that are correctly synchronized execute under sequentially
consistent semantics. Programs with data races may exhibit
non-sequentially consistent behavior.
A pair of heap accesses to the same variable are conflicting if there
are performed by different threads and at least one of them is a
A program is correctly synchronized if and only if, for all
sequentially consistent executions of the program, any pair of
conflicting accesses are ordered by a happens-before relationship.
This isn't a complete semantics, because is says nothing at all about
programs that contain even a single data race. But this is one of the
base elements that people can use to reason about whether a program
is correctly synchronized.
Is there really more to add than "the values seen from a data race are
JavaMemoryModel mailing list - http://www.cs.umd.edu/~pugh/java/memoryModel
This archive was generated by hypermail 2b29 : Thu Oct 13 2005 - 07:00:35 EDT