object pool
От: szag  
Дата: 08.12.10 18:54
Оценка:
Здравствуйте!

Интересует следующее:

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. Есть ли готовые решения ну или что-то похожее на то что меня интересует? Просто у нас в проекте есть несколько подобных велосипедов, которые мне не нравятся, хотелось бы заюзать что-то хорошее и проверенное
pool
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.