2010-03-12 63 views
0

是否有管理由2个或更多其他对象共享的对象的最佳做法。即使在不同的线程上运行?C++管理共享对象的句柄问题

例如,A被创建并且它的指针被给予B和C. B> GiveObj(A); C)> GiveObj(A);

现在我该如何删除objA?

到目前为止,我所关心的是监视器有多少参考点,当这个计数器为0时,它会删除它(例如当A通过时,接收器调用A-> Aquire(),当它完成时它调用A-> release();

或者我可以告诉B-> RemoveObj(A);和C-> RemoveObj(A);问题是如果B或C在不同的线程上运行,我不能删除A,直到他们完成A,并且他们看到了RemoveObj调用(这需要一堆杂乱的标志)。

会有一个很好的方式来做到这一点,可能与信号/插槽?

谢谢

回答

2

最好的选择是使用智能指针实现,如Boost's shared_ptr

这允许您根据需要传递指针,而不用担心删除操作。


编辑:

我才意识到你有信号/插槽标签添加。如果碰巧你正在使用Qt,你可能需要QSharedPointer(或类似的)而不是一个boost指针实现。