John Dlugosz wrote:
I'm looking at shared_ptr and weak_ptr as a TR1 standard approach. It is hard to follow the implementation, but I'm wondering about some specific issues.
My set of classes (http://www.dlugosz.com/Repertoire/refman/Classics/Smart%20Pointers%20Overvie...), published over ten years ago, has similar features. My class "baro" is like your weak_pointer.
I recall a threading issue where one thread is dropping the last owned reference at the same time another thread is realizing a weak_pointer. The first decrements the refcount to zero, and the second increments it again. Is the object destructed? I'm using a specific mechanism to support this and related features, and I don't see that in your code.
Is the Boost implementation for Windows (32 and 64-bit) robust and lock-free in cases like this? How does it work?
--John
I think this might help: http://www.boost.org/doc/libs/1_39_0/libs/smart_ptr/shared_ptr.htm#ThreadSaf... It covers shared_ptr only, though. Regards, Roland