[cpp-threads] Yet another visibility question

Nelson, Clark clark.nelson at intel.com
Mon Dec 11 20:08:38 GMT 2006


> 1.10p7:
> {Add synchronizes-with relationships back in for all writer-reader
> pairs of atomic memory operations.  Whether or not something is an
> acquire or release operation no longer affects "synchronizes-with",
> but it still affects "inter-thread-ordered-before" and hence
> "happens-before".  This means that "raw" operations can be used
> to synchronize threads if the "inter-thread-ordered-before"
> relationships are introduced by other ordered operations, which
> now act more like fences, as they generally do on hardware.
> We also provide per-variable TSO, which is what triggered all these
> changes.}
> "An evaluation A that performs a release operation on a location L
> synchronizes-with an evaluation B that performs an acquire 
> operation on
> L and
> reads the value written by A."
> ==>
> "All modifications to a particular memory location L occur in some
> particular total order, referred to as the modification order for L.
> An evaluation A that performs a synchronization operation 
> that modifies
> location L synchronizes-with an evaluation B that reads the value
> written
> by A, or reads a value that was subsequently (in modification
> order) written to L.

My main concern about this direction is adding yet another ordering
relation ("modification order") to the five we already have ("sequenced
before", "inter-thread ordered before", "synchronizes with", "happens
before", and "precedes").

Do we really need six ordering relations?

Clark



More information about the cpp-threads mailing list