
divick kishore wrote:
Yes, in that you can safely copy pointers in multiple threads at the same time, i.e. access to the reference count is thread-safe. No, in that you cannot use a single smart pointer object simultaneously from several threads.
The above two statements are conflicting. You say that access to reference count is thread safe but while access to shared_ptr from multiple threads is not thread safe. Then what is the benefit of it being thread safe if you cannot use it from multiple threads.
No, they are not. You misunderstood the statements.
Also being thread safe means read and write both are thread safe. So once you say that it is thread safe, then I assume that you mean both read and write are thread safe. In the above statements, is that what you mean?
What that reply meant was as following: - You may safely manipulate the smart_ptr<> instance itself, including modification to the reference count; - You may not safely use the object pointed to by the smart_ptr<> instance, if that object is not thread-safe.
I am now even more confused about the thread safety of smart pointers. Could you please elaborate it more.
In short, the smart_ptr<> class's thread safety is limited to the smart_ptr<> instances themselves, but not to the objects pointed to by the smart_ptr<> instances. Cheers, Freddie