Boost logo

Boost :

Subject: Re: [boost] Interest in atomic library?
From: Kenny Riddile (kfriddile_at_[hidden])
Date: 2009-04-22 21:13:14


Seth LaForge wrote:
> In this day and age, running our C++ programs off fossil fuels makes a
> dangerous contribution to global warming and requires purchase of
> carbon offsets for ethical programming. Thus I think it's time for a
> Boost atomic power library. Oops, sorrry, wrong meaning of atomic.
>
> What would people think of an atomic integer library, along the lines
> of Linux's asm/atomic.h? I'd propose a class atomic<T> implementing
> operations like atomic read (implicit conversion to T), atomic set
> (assignment from T), and compare-and-exchange. For integral types it
> would support atomic add and return result (operator+=), atomic
> subtract and return result (operator-=), atomic increment and return
> result (prefix operator++), and atomic decrement and return result
> (prefix operator--).
>
> For arbitrary architectures or unhandled types of T, there would be a
> naive implementation using a mutex. On supported architectures there
> would be specializations for integral T types, using assembly to
> implement more efficient atomic operations. This assembly could
> pretty much just be borrowed from the Linux asm/atomic.h headers.
>
> What do people think? I see pros:
> + Cross-platform efficient atomic operations for efficient threaded apps.
> I see cons:
> - Hard to predict whether your atomic ops will be efficient (no
> specialization for your architecture/T).
> - Some architectures may implement different atomic ops, making the
> above ops not the most efficient.
>
> I think the pros outweight the cons. I'd personally much rather use a
> Boost.atomic library than asm/atomic.h.
>
> Seth
> _______________________________________________
> Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
>
Intel's TBB has an atomic<T>

http://www.threadingbuildingblocks.org/file.php?fid=77


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