[cpp-threads] D2335 (sequential consistency proof) revision
Herb Sutter
hsutter at microsoft.com
Fri Aug 24 22:36:52 BST 2007
> If we do this, I believe we no longer need acquire semantics for a
> failed trylock.
And we don't need full fence semantics for a normal lock, right?
Sounds like a good plan.
Herb
> -----Original Message-----
> From: cpp-threads-bounces at decadentplace.org.uk [mailto:cpp-threads-
> bounces at decadentplace.org.uk] On Behalf Of Boehm, Hans
> Sent: Friday, August 24, 2007 2:30 PM
> To: C++ threads standardisation
> Cc: Howard Hinnant
> Subject: Re: [cpp-threads] D2335 (sequential consistency proof)
> revision
>
> [Copied Doug explicitly, since I'd like his reaction, particularly
> since
> it also suggests a corresponding change to JSR166.]
>
> Re: handling of trylock in the memory model:
>
> > From: Lawrence Crowl
> > The reasoning is that if SC is a strong goal, then we need to
> > provide the mechanisms to make it achievable. An alternate
> > approach is to disallow this use of the trylock.
> >
> Here's another possible way out of this. I'm not 100% sure this is
> correct yet, but it seems like it on first glance:
>
> We allow trylock and timedlock to fail spuriously, even if the lock was
> never held.
>
> The cause of all the problems with trylock and timedlock are that they
> see a "write" (lock) that didn't happen before it. I think this
> removes
> that problem, since a failed trylock can no longer be abused as a read;
> it conveys no information.
>
> For any reasonable trylock-based code I have written or can think of,
> this doesn't matter. If the trylock fails, the code either eventually
> retires, or proceeds in a way that's safe without the lock.
>
> This has no actual implementation impact, in that implementations that
> never fail spuriously are fine. The programmer is just not allowed to
> rely on that behavior. This is purely a way to characterize "bad" uses
> of trylock to the programmer.
>
> If we do this, I believe we no longer need acquire semantics for a
> failed trylock. I think that also applies to Java, which is why it
> might be an attractive change there.
>
> Would everyone be OK with this?
>
> Hans
>
> --
> cpp-threads mailing list
> cpp-threads at decadentplace.org.uk
> http://www.decadentplace.org.uk/cgi-bin/mailman/listinfo/cpp-threads
More information about the cpp-threads
mailing list