$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-users] weak_ptr and thread safety
From: Pavel Shevaev (pacha.shevaev_at_[hidden])
Date: 2009-07-22 15:05:46
Guys, could you please clarify whether the following usage of weak_ptr
is thread safe:
//thread A:
shared_ptr<Foo> p = wp.lock();
//thread B:
p.reset();
I believe it's not thread safe as it looks very similar to the example
3 from the shared_ptr documentation:
// thread A
p = p3; // reads p3, writes p
// thread B
p3.reset(); // writes p3; undefined, simultaneous read/write
Am I right in my assumption?
And if yes, could you please give any recommendations for the
following use case.
I have a networking thread which owns a set of net session objects
stored as shared_ptrs. I also have another thread where some entities
have weak_ptrs members pointing to net session objects from networking
thread. From time to time net sessions are erased and I think when at
the very this moment entity object from another thread tries to lock()
the net session and access it seg. fault happens.
Thanks in advance.
-- Best regards, Pavel