
24 Sep
2004
24 Sep
'04
11:30 a.m.
John Torjo wrote:
Hi Peter,
I think there is a bug in your Interlocked* implementation of shared_ptr (http://www.pdimov.com/cpp/shared_count_x86_exp2.hpp).
In atomic_read you have: inline long atomic_read(long volatile const & value) { return value; }
I don't believe this is thread-safe.
(repost) On x86/IA32, I believe that it's as thread safe as you can get. Note that all count updates go through Interlocked* calls. On IA32, plain reads can only return a somewhat "surprising" value when interleaved with plain writes, and even then, the element of surprise is limited. ;-)