2010-03-12 64 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指針實現。