C++ Logo

std-discussion

Advanced search

Does the standard guarantee that shared_from_this is thread safe?

From: 刘四维 <liusiwei_at_[hidden]>
Date: Wed, 2 Jun 2021 08:34:55 +0800
Hi all,

The standard seems not mention the thread-safety info on shared_from_this. However, cpppreference state&nbsp;:


&gt;&nbsp;Effectively executes std::shared_ptr(weak_this), where weak_this is the private mutable std::weak_ptr member of enable_shared_from_this.


Can I take it as a guarantee that it's safe to call&nbsp;shared_from_this&nbsp;in multiple threads? Since if I understand correctly, constructing a shared_ptr with a shared_ptr or weak_ptr object, is thread safe.



Take the following code as an example:



class A : public std::enable_shared_from_this<A&gt; { public: std::shared_ptr<A&gt; clone() { return shared_from_this(); } };



In this case, can I call&nbsp;A::clone()&nbsp;in multiple threads?




Regards

Received on 2021-06-01 19:35:11