1#ifndef OSMSCOUT_OBJECTPOOL_H
2#define OSMSCOUT_OBJECTPOOL_H
41 std::scoped_lock<std::mutex> guard(mutex);
42 if (!
IsValid(o) || pool.size()==maxSize){
50 using Ptr = std::unique_ptr<T, std::function<void(T*)>>;
56 pool.reserve(std::min((
size_t)100, maxSize));
80 std::scoped_lock<std::mutex> guard(mutex);
88 return std::unique_ptr<T>(
nullptr);
91 return Ptr(o, [
this](T* o){ Return(o); });
96 std::scoped_lock<std::mutex> guard(mutex);
102 std::scoped_lock<std::mutex> guard(mutex);
virtual void Destroy(T *o) noexcept
Definition ObjectPool.h:68
virtual bool IsValid(T *) noexcept
Definition ObjectPool.h:73
void Clear()
Definition ObjectPool.h:100
std::unique_ptr< T, std::function< void(T *)> > Ptr
Definition ObjectPool.h:50
virtual ~ObjectPool()
Definition ObjectPool.h:59
ObjectPool(size_t maxSize)
Definition ObjectPool.h:53
virtual Ptr Borrow()
Definition ObjectPool.h:78
virtual T * MakeNew() noexcept=0
size_t Size()
Definition ObjectPool.h:94