Boost logo

Boost :

Subject: Re: [boost] [lockfree] review
From: Alexander Terekhov (terekhov_at_[hidden])
Date: 2011-08-24 14:26:21


Alexander Terekhov wrote:
>
> Dave Abrahams wrote:
> >
> > on Tue Aug 23 2011, Alexander Terekhov <terekhov-AT-web.de> wrote:
> >
> > > Dave Abrahams wrote:
> > >
> > > [... memory model ...]
> > >
> > >> It's not really different than locking. If you want to write to shared
> > >> data, you need some way of making it not-a-race. It's just that when
> > >> the data structure is small enough (like an int) you can make it atomic
> > >> instead of putting a lock around it.
> > >
> > > No.
> >
> > All I'm saying here is that a C++11 default atomic int is equivalent to
> > an int, coupled with an associated mutex, where accesses to the int are
> > always protected by locking the associated mutex. If you're seriously
> > disagreeing with *that*, please say explicitly on what grounds.
>
> int i; mutex mi,
> int j; mutex mj;
>
> mi.lock();
> i = 1;
> mi.unlock();
>
> mj.lock();
> j = 2;
> mj.unlock();
>
> can be transformed to
>
> multi_lock(mi, mj); // deadlock free
> j = 2;
> i = 1;
> mi.unlock();
> mj.unlock();
>
> and thus result in reodering i = 1 and j = 2.
>
> With C++11 default atomics (SC) for i and j such reodering is
> prohibited.

See also:

http://www.cl.cam.ac.uk/~pes20/cpp/cpp0xmappings.html

regards,
alexander.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk