Boost logo

Boost :

Subject: Re: [boost] storing intrusive_ptr in atomic?!
From: Oliver Kowalke (oliver.kowalke_at_[hidden])
Date: 2013-10-25 07:10:29


2013/10/25 Giovanni Piero Deretta <gpderetta_at_[hidden]>

> char buf[N];
> T obj;
> std::memcpy(buf, &obj, N);
> std::memcpy(&obj, buf, N);
>
> For T = boost::intrusive_ptr<T2>, the above code formally leads to UB, as
> intrusive_ptr is not trivially copiable.
>
> It might (or not) work in practice, but in the case of std::atomic, it will
> bypass the copy constructor which means that the reference count won't be
> updated.
>

the use-count can be 'adjusted' before, e.g. prevent deallocating the
object owned by the intrusive_ptr unintentionally.

I'm interested in atomically exchange intrusive-pointers - but anyway I
could also use raw-pointers in atomic<> and increment
the use-counter of the intrusive_ptr owning the raw-pointer before.


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