C++ で並行オブジェクト プールを設計したいのですが、可能なプロトタイプは次のとおりです。
template<std::size_t OBJ_SIZE>
class Pool {
public:
template<typename T>
void new(std::shared_ptr<T> & product);
// more details...
};
- オブジェクト (製品) が返されると、その有効期間は、オブジェクトを含むスマート ポインターによって完全に制御されます。
- プールは複数のスレッドで使用できます。
ユーザーがオブジェクト/メモリを使い終わった後、オブジェクト/メモリを自動的に再利用するにはどうすればよいですか?
私の考えは、製品のデストラクタで呼び出されるプールに delete() メソッドを持つことです。
より良いデザインはありますか?たとえば、製品クラスがプールとあまり結合されていない方法 (これは一般的なプールであることに注意してください)。どんなアイデアでも大歓迎です。