Здравствуйте!
Интересует следующее:
class big_object
{
};
template<typename object_type>
class pool
{
};
typedef boost::shared_ptr<big_object> big_object_ptr;
// использование
int main()
{
pool<big_object> my_pool;
my_pool.resize(10); // создается 10 объектов типа big_object
if(true)
{
big_object_ptr obj1 = my_pool.get_object(); // забираем один объкт, остается 9
big_object_ptr obj2 = my_pool.get_object(); // забираем один объкт, остается 8
my_pool.size() == 8;
} // на выходе из скопа оба объекта становятся доступными в my_pool
my_pool.size() == 10;
}
Думаю общий смысл понятен. Нужен пул для больших объектов, если объхект кто-то занял то его нельзя выдавать больше. При окончании использования объекта он автоматически становится доступным через pool. Сам pool должен быть потокобезопастным. Есть объекты закончились то кидаем эксепшн. Так же интересует возможность сделать resize. Есть ли готовые решения ну или что-то похожее на то что меня интересует? Просто у нас в проекте есть несколько подобных велосипедов, которые мне не нравятся, хотелось бы заюзать что-то хорошее и проверенное