Boost logo

Boost :

Subject: Re: [boost] [lockfree] review
From: Dave Abrahams (dave_at_[hidden])
Date: 2011-08-08 11:07:46


on Sat Aug 06 2011, Gottlob Frege <gottlobfrege-AT-gmail.com> wrote:

> In lockfree programming you need to look at what is in your data
> structure, what are the possible states. At any 'atomic sequence
> point' or 'publication point' which known good state are you in. This
> is somewhat the same as any program - "what states can you be in, they
> better all be correct". Lockfree just tends to have more states in a
> small amount of code, and less (ie 0) "internal blocks" where you can
> temporarily break the invariants. Your code needs to be somewhat
> convoluted so that:
> 1. temporary internal spots exist where invariants can be broken
> 2. publication/restoration of the invariant state is a single atomic operation

This is really not all that different from single-threaded programming.
If I do:

   void X::f()
   {
        this->a = 1; // break invariant
        y->g();
        this->a = 0; // restore invariant
   }

I had better be sure that y->g() can't observe my broken invariant. The
problems are not all that different.

-- 
Dave Abrahams
BoostPro Computing
http://www.boostpro.com

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