是否有管理由 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 调用。(这需要一堆凌乱的标志)。
是否有一种很好的方法可以做到这一点,可能使用信号/插槽?
谢谢