34 using Factory = std::function<T*()>;
35 using Free = std::function<void(T*)>;
36 using UniquePtr = std::unique_ptr<T, Deleter>;
42 std::vector<T*> resources_;
53 : factory_(std::move(factory)), free_(std::move(free)), inUse_(0) {}
60 std::lock_guard<std::mutex> lock(mutex_);
61 if (!resources_.empty()) {
63 resources_.pop_back();
74 for (
const auto resource : resources_) {
85 std::lock_guard<std::mutex> lock(pool_->mutex_);
88 pool_->resources_.push_back(resource);
Definition ResourcePool.h:79
Deleter(ResourcePool &pool)
Definition ResourcePool.h:82
void operator()(T *resource)
Definition ResourcePool.h:84
Definition ResourcePool.h:31
UniquePtr get()
Definition ResourcePool.h:59
ResourcePool(Factory factory, Free free)
Definition ResourcePool.h:52
~ResourcePool() noexcept
Definition ResourcePool.h:72
std::function< void(T *)> Free
Definition ResourcePool.h:35
std::function< T *()> Factory
Definition ResourcePool.h:34
std::unique_ptr< T, Deleter > UniquePtr
Definition ResourcePool.h:36
#define assert(condition)
Definition lz4.c:273
Definition ErrorHolder.h:16