boost::shared_ptr<>::compare_and_swap() -- Am I insane for wanting this?

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) Am I insane in asking for this? ;^) Does this have a prayer of being exception-safe? Thanks. -- George T. Talbot <gtalbot@locuspharma.com>

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)
Very, very difficult. :-) shared_ptr is not atomic; you can look at Joe Seigh's atomic_ptr: http://atomic-ptr-plus.sourceforge.net/ and Chris Thomasson's http://appcore.home.comcast.net/vzoom/refcount/ for examples of atomic reference counted pointers. Shared_ptr can be made atomic by using a spinlock. This isn't really lock-free, though.
participants (2)
-
Peter Dimov
-
Talbot, George