• 2021.4
  • 09/27/2021
  • Public Content
Contents

memory_pool_allocator

To enable this feature, set the
TBB_PREVIEW_MEMORY_POOL
macro to 1.
A class template that provides a memory pool with a C++ allocator interface.

Description

memory_pool_allocator
meets the allocator requirements from the [allocator.requirements] ISO C++ Standard section It also provides a constructor to allocate and deallocate memory. This constructor is linked with an instance of either the
memory_pool
or the
fixed_pool
class. The class is mainly intended for enabling memory pools within STL containers.

API

Header
#include "oneapi/tbb/memory_pool.h"
Synopsis
namespace oneapi { namespace tbb { template<typename T> class memory_pool_allocator { public: using value_type = T; using pointer = value_type*; using const_pointer = const value_type*; using reference = value_type&; using const_reference = const value_type&; using size_type = size_t; using difference_type = ptrdiff_t; template<typename U> struct rebind { using other = memory_pool_allocator<U>; }; explicit memory_pool_allocator(memory_pool &pool) throw(); explicit memory_pool_allocator(fixed_pool &pool) throw(); memory_pool_allocator(const memory_pool_allocator& src) throw(); template<typename U> memory_pool_allocator(const memory_pool_allocator<U,P>& src) throw(); pointer address(reference x) const; const_pointer address(const_reference x) const; pointer allocate(size_type n, const void* hint=0); void deallocate(pointer p, size_type); size_type max_size() const throw(); void construct(pointer p, const T& value); void destroy(pointer p); }; template<> class memory_pool_allocator<void> { public: using pointer = void*; using const_pointer = const void*; using value_type = void; template<typename U> struct rebind { using other = memory_pool_allocator<U>; }; memory_pool_allocator(memory_pool &pool) throw(); memory_pool_allocator(fixed_pool &pool) throw(); memory_pool_allocator(const memory_pool_allocator& src) throw(); template<typename U> memory_pool_allocator(const memory_pool_allocator<U>& src) throw(); }; } // namespace tbb } // namespace oneapi template<typename T, typename U> inline bool operator==( const memory_pool_allocator<T>& a, const memory_pool_allocator<U>& b); template<typename T, typename U> inline bool operator!=( const memory_pool_allocator<T>& a, const memory_pool_allocator<U>& b);
Member Functions
explicit
memory_pool_allocator
(memory_pool &
pool
)
Effects
: Constructs a memory pool allocator serviced by
memory_pool
instance pool.
explicit
memory_pool_allocator
(fixed_pool &
pool
)
Effects
: Constructs a memory pool allocator serviced by
fixed_pool
instance pool.

Examples

The code below provides a simple example of container construction with the use of a memory pool.
#define TBB_PREVIEW_MEMORY_POOL 1 #include "oneapi/tbb/memory_pool.h" ... typedef oneapi::tbb::memory_pool_allocator<int> pool_allocator_t; std::list<int, pool_allocator_t> my_list(pool_allocator_t( my_pool ));

Product and Performance Information

1

Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.