SomeObj
是一个以多线程方式访问的类,并且只有在其所有关联的线程都关闭后才应该清除SomeObj
正在控制其关联线程的生命周期SomeObj
被破坏可能会在任何线程试图访问被破坏的SomeObj
时导致“分段错误” std::mutex
)std::shared_ptr
std::shared_ptr
已经维护了该对象的引用计数shared_ptr
由外部代码维护std::shared_ptr<SomeObj>
,如果只有SomeObj
可以访问shared_ptr
引用计数,则可以将其用于引用每个与之相关的线程...换句话说,如果SomeObj
可能为其每个关联线程拥有一个std::shared_pt<this>
。 给出std::shared_ptr<SomeObj>
,可以SomeObj
访问std::shared_ptr<SomeObj>
维护的引用,或者保存一个。 std::shared_ptr<this>
??
答案 0 :(得分:1)
改变伊格尔:
@NadavRub您知道
std::enable_shared_from_this
吗?
NadavRub:
感谢@alterigel,这正是我所需要的。