0

是否有管理由 2 个或多个其他对象共享的对象的最佳实践。即使在不同的线程上运行?

例如,创建了 A,并将指向它的指针分配给 B 和 C。 ObjA A = new ObjA(); B->GiveObj(A); C->GiveObj(A);

现在我怎样才能删除 objA?

到目前为止,我所关心的是 A 监控它有多少 ref 并且当这个计数器为 0 时它会删除它(例如当 A 被传递时,接收器调用 A->Aquire(),当它完成时它调用 A- >释放();

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

是否有一种很好的方法可以做到这一点,可能使用信号/插槽?

谢谢

4

1 回答 1

2

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

这使您可以根据需要传递指针,而不必担心删除。


编辑:

我刚刚意识到您添加了信号/插槽标签。如果您碰巧使用 Qt,您可能想要QSharedPointer(或类似的)而不是 boost 指针实现。

于 2010-03-12T00:13:18.743 回答