Subject: Re: [boost] [atomic] comments
From: Tim Blechmann (tim_at_[hidden])
Date: 2011-11-01 14:12:35
(responding to an old mail after re-reading my latest version of the draft)
> > > well if the atomics are truely atomic, then BOOST_ATOMIC_*_LOCK_FREE
> > > == 2 and I find a platform where you cannot use them safely between
> > > processes difficult to imagine (not that something like that could
> > > not exist)>
> > one would have to do the dispatching logic in the preprocessor, so one
> > cannot dispatch depending on the typedef operator.
> it's certainly possible to build a helper template to map types to these
> macro values (map to the value of BOOST_ATOMIC_INT_LOCK_FREE for all types
> T with sizeof(T) == sizeof(int) for example)
the preprocessor variables are only defined for integral types.
the standard also says:
template <class T>
bool atomic_is_lock_free(const volatile atomic_type*);
The function atomic_is_lock_free (29.6) indicates whether the object is lock-
free. In any given program execution, the result of the lock-free query shall
be consistent for all pointers of the same type.
but atomic_is_lock_free is only defined for integral atomic types.
so to be standard compliant, one could build the helper template only for
integral atomic types.