是否有管理由2个或更多其他对象共享的Object的最佳实践。即使在不同的线程上运行?
例如,创建A并将指向它的指针赋予B和C. ObjA A =新的ObjA(); B-> GiveObj(A); C-> GiveObj(A);
现在我该如何删除objA?
到目前为止我所知道的是A监视器有多少个ref,当这个计数器为0时它会删除它(例如当A通过时,接收器调用A-> Aquire(),当它完成时它调用A-> release();
或者我可以告诉B-> RemoveObj(A);和C-> RemoveObj(A);问题是如果B或C在不同的线程上运行,我不能删除A,直到它们完成A,并且他们已经看到了RemoveObj调用。 (这需要一堆凌乱的旗帜。)
有没有一种很好的方法可以做到这一点,可能使用Signal / Slot?
由于
答案 0 :(得分:2)
最好的选择是使用智能指针实现,例如Boost's shared_ptr。
这允许您根据需要传递指针,而不必担心删除。
编辑:
我刚刚意识到你添加了信号/插槽标签。如果您正在使用Qt,那么您可能需要QSharedPointer(或类似)而不是boost指针实现。