Boost logo

Boost :

From: Talbot, George (Gtalbot_at_[hidden])
Date: 2006-11-10 09:39:35

> Talbot, George wrote:
> > Hi,
> >
> > I have a question for the designers and implementers of
> > boost::shared_ptr:
> >
> > Is there any plan afoot to support lock-free programming using
> > shared_ptr? I was fooling around with wanting to attempt lock-free
> > update of a tree structure that I have that uses shared_ptr. If
> > no-one's thinking about this, how might I go about implementing:
> >
> > bool boost::shared_ptr<T>::compare_and_swap(T* original,
> > shared_ptr<T>& new_one)

Peter Dimov wrote:
> Very, very difficult. :-) shared_ptr is not atomic;

I can pass a shared_ptr between threads right now, correct?

> you can look at Joe Seigh's atomic_ptr:
> and Chris Thomasson's
> for examples of atomic reference counted pointers.
> Shared_ptr can be made atomic by using a spinlock. This isn't really
> lock-free, though.

I thought that the current implementation of shared_ptr is lock-free and
multithreaded in the sense that I can pass shared_ptr between threads,
and the reference count is updated correctly, etc. (I'm using BOOST
1.33.) Am I incorrect in thinking this?

I can see where compare_and_swap() probably can't be added without
adding a sequence number. Am I right saying that this is one of the
reasons adding this to shared_pointer isn't realistic?

George T. Talbot

Boost list run by bdawes at, gregod at, cpdaniel at, john at