2015-11-20 48 views
0

智能指針(一個或多個)完全控制:併發對象池,其產品的壽命由含有我想設計在C++併發對象池,可能原型作爲對象

template<std::size_t OBJ_SIZE> 
class Pool { 
public: 
    template<typename T> 
    void new(std::shared_ptr<T> & product); 
    // more details... 
}; 
  • 一旦對象(產品)被返回,它的生命週期完全由包含該對象的智能指針控制。
  • 池可能被多個線程使用。

用戶完成後,我們如何自動回收對象/內存?

我的想法是在產品的析構函數中調用池中的delete()方法。

有更好的設計嗎?例如一種產品類與Pool更少耦合的方式(注意它是一個通用池)。任何想法都歡迎。

+0

我不確定我是否理解這些要求。你是說你希望分配對象的生命週期由傳入的不相關shared_ptr的生命週期來控制? –

+0

@RichardHodges,shared_ptr用於包含返回的對象,並控制其生存期。 – Clinton

回答

0

如果我正確理解你的問題,你需要返回一個帶自定義刪除器的shared_pointer。 Deleter將知道如何使用池的deallocate()方法刪除對象。這是解決這個問題的標準方法。