我的應用程序問題如下 -Boost shared_ptr use_count函數
我有一個大的結構foo。由於這些數據量很大,並且出於內存管理的原因,我們不希望在數據處理完成時將其刪除。
我們將它們存儲在std::vector<boost::shared_ptr<foo>>.
我的問題是有關知道什麼時候所有的處理完成。第一個決定是我們不希望任何其他應用程序代碼在結構中標記完整的標誌,因爲程序中有多個執行路徑,我們無法預測哪一個是最後一個。
所以在我們的實現中,一旦處理完畢,我們刪除的boost::shared_ptr<foo>>
所有副本除了一個向量中。這會將shared_ptr中的引用計數器放到1.是否可以使用shared_ptr.use_count()來查看它是否等於1,以知道應用程序的所有其他部分何時完成數據。
一個額外的原因,我問的問題是,在共享指針shared_ptr升壓文檔建議不使用「use_count」爲產品代碼。
編輯 - 我沒有說的是,當我們需要一個新的富,我們將掃描foo的指針尋找一個foo的載體,其是當前未使用和使用FOO下一輪的處理。這就是爲什麼我認爲使用1的引用計數器是確保這個特定foo對象不再被使用的安全方法。
你的代碼是多線程的嗎?如果是的話,這將改變答案。 – wheaties 2010-05-28 14:01:01
是的,有3到6個線程處理數據 – 2010-05-28 14:09:28