[cpp-threads] Slightly revised memory model proposal (D2300)

Paul E. McKenney paulmck at linux.vnet.ibm.com
Sat Jun 23 01:50:28 BST 2007


On Sat, Jun 23, 2007 at 12:16:55AM -0000, Boehm, Hans wrote:
> 
> > -----Original Message-----
> > From: cpp-threads-bounces at decadentplace.org.uk 
> > [mailto:cpp-threads-bounces at decadentplace.org.uk] On Behalf 
> > Of Paul E. McKenney
> > Sent: Friday, June 22, 2007 10:37 AM
> > To: C++ threads standardisation
> > Cc: Sarita V Adve
> > Subject: Re: [cpp-threads] Slightly revised memory model 
> > proposal (D2300)
> > 
> > On Fri, Jun 22, 2007 at 10:08:50AM -0700, Paul E. McKenney wrote:
> > > On Fri, Jun 22, 2007 at 02:22:30AM -0000, Boehm, Hans wrote:
> > 
> > [ . . . ]
> > 
> > > > 1.10p10:
> > > 
> > > [ . . . ]
> > > 
> > > >     A multi-threaded execution is consistent if each 
> > thread observes
> > > >     values of objects that obey the following constraints:
> > > > 
> > > >         * No evaluation happens before itself.
> > 
> > One more thing...  This was added in the revision, but the 
> > node has not been updated to give the rationale.  Seems 
> > intuitive enough at first glance, but more thought quickly 
> > leads to questions like "which part of the evaluation?" and 
> > "from the viewpoint of which component of the system?".
> > 
> > So, what is this really trying to say, and what mishaps is it 
> > trying to prevent?
> > 
> My understanding is that "evaluation" here is basically standardese for
> "memory access".  (Clark wrote that part, and still has to make a pass
> through some of my changes.)  "Happens before" is the relation defined
> in 1.10p8.  So this is basically saying that that relation consistently
> orders memory accesses.  I added a bit more text to the subsequent note,
> and corrected the numbering in that note.  Today's version is attached,
> this time even with the correct date.

OK, memory accesses not happening before themselves does make sense.
I think.  ;-)

Taking a very quick look at the new version:

o	Isn't the addition of "sequentially consistent ordered stores"
	to the "synchronizes with" relation redundant given that ordered
	stores have both acquire and release semantics and that "happens
	before" is transitive?

o	As noted in earlier email, I still would like to see relaxed
	RMW operations excluded from propagation of "synchronizes with".

o	In 1.10p10 fourth major bullet, "Ms modification order" should be
	"M's modification order".

						Thanx, Paul



More information about the cpp-threads mailing list