Hi Kristian,

thanks for your feedback. Yes I added these templates to hide data type
and warapping in locks, which I still find reasonable.

OTOH I also hid the fact of use of atomic ops. I tend to agree it is wrong.

Do you think keeping the former and fixing the latter is acceptable?

Thanks,
Sergey

On Fri, Jan 24, 2014 at 09:05:04AM +0100, Kristian Nielsen wrote:
> Sergey Vojtovich <[email protected]> writes:
> 
> > +#ifdef __cplusplus
> > +template <typename T, int S> class Atomic_type_triat;
> > +
> > +
> > +template <typename T> class Atomic_type_triat<T, 4>
> 
> > +template <typename T> class Atomic_type_triat<T, 8>
> 
> > +template <typename T, typename S= Atomic_type_triat<T, sizeof(T)> > class 
> > Atomic
> 
> > +  T operator++() { return add(1) + 1; }
> 
> [lots and lots of more template code snipped]
> 
> I am vetoing this.
> 
> We really, _really_ do not want to package up the atomic stuff in even more
> abstractions and API layers than we already have.
> 
> Atomics and lock-free stuff is in itself plenty complicated. It is crucial
> that one can at least see easily in the code what is going on, without also
> having to spend effort to understand multiple layers of wrapping.
> 
> As far as I can see, the only thing the templates do is hide stuff (like the
> data type used and the wrapping in locks on platforms without atomic
> support?), while what we need is to make those details clear to people reading
> the code, not to hide them!
> 
>  - Kristian.

_______________________________________________
Mailing list: https://launchpad.net/~maria-developers
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~maria-developers
More help   : https://help.launchpad.net/ListHelp

Reply via email to