29template <
bool kThreadSafe>
43 std::function<
void*(
size_t)> allocFunc,
44 std::function<
void(
void*)> deallocFunc);
51 DISPENSO_DLL_ACCESS
char*
alloc();
58 DISPENSO_DLL_ACCESS
void dealloc(
char* ptr);
65 DISPENSO_DLL_ACCESS
void clear();
72 return (backingAllocs2_.size() + backingAllocs_.size()) * chunksPerAlloc_;
80 const size_t chunkSize_;
81 const size_t allocSize_;
82 const size_t chunksPerAlloc_;
84 std::function<
void*(size_t)> allocFunc_;
85 std::function<void(
void*)> deallocFunc_;
88 alignas(
kCacheLineSize) std::atomic<uint32_t> backingAllocLock_{0};
89 std::vector<char*> backingAllocs_;
90 std::vector<char*> backingAllocs2_;
92 std::vector<char*> chunks_;
95using PoolAllocator = PoolAllocatorT<true>;
96using NoLockPoolAllocator = PoolAllocatorT<false>;
DISPENSO_DLL_ACCESS char * alloc()
DISPENSO_DLL_ACCESS void clear()
DISPENSO_DLL_ACCESS ~PoolAllocatorT()
size_t totalChunkCapacity() const
DISPENSO_DLL_ACCESS PoolAllocatorT(size_t chunkSize, size_t allocSize, std::function< void *(size_t)> allocFunc, std::function< void(void *)> deallocFunc)
DISPENSO_DLL_ACCESS void dealloc(char *ptr)