|
Boost : |
From: JOAQUIN LOPEZ MU?Z (joaquin_at_[hidden])
Date: 2006-07-04 14:40:55
Hello,
A naive usage of intrusive_ptr involves having a
refcount embedded in the pointed to object and
providing add_red and release functions like:
void intrusive_ptr_add_ref(const my_class* p)
{
++(p->ref);
}
template<typename T>
void intrusive_ptr_release(const my_class* p)
{
if(--(p->ref)==0){
// whatever
}
}
But, AFAICS, this is not thread safe, as intrusive_ptr
itself does not add any thread safety layer. So my
question is how to efficiently provide add_ref and release
functions which are thread safe (wrt to refcounting)? I can
use a class-level boost::detail::lightweight_mutex in the
obvious way, but I understand shared_ptr uses much more
advanced mechanisms and maybe these are available for
(semi)public consuption at boost/detail.
Thank you,
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk