Struct thrust::mr::disjoint_synchronized_pool_resource
A mutex-synchronized version of disjoint_unsynchronized_pool_resource
. Uses std::mutex
, and therefore requires C++11.
Template Parameters:
Upstream
the type of memory resources that will be used for allocating memory blocks to be handed off to the userBookkeeper
the type of memory resources that will be used for allocating bookkeeping memory
Inherits From: thrust::mr::memory_resource< Upstream::pointer >
#include <thrust/mr/disjoint_sync_pool.h>
template <typename Upstream, typename Bookkeeper> struct thrust::mr::disjoint_synchronized_pool_resource { public: typedef see below unsync_pool;
typedef see below lock_t;
typedef see below void_ptr;
/* Inherited from thrust::mr::memory_resource< Upstream::pointer >
*/ typedef see below pointer;
static pool_options get_default_options();
disjoint_synchronized_pool_resource(Upstream * upstream, Bookkeeper * bookkeeper, pool_options options = get_default_options());
disjoint_synchronized_pool_resource(pool_options options = get_default_options());
void release();
virtual _CCCL_NODISCARD void_ptr do_allocate(std::size_t bytes, std::size_t alignment = alignof(std::max_align_t)) override;
virtual void do_deallocate(void_ptr p, std::size_t bytes, std::size_t alignment = alignof(std::max_align_t)) override;
/* Inherited from thrust::mr::memory_resource< Upstream::pointer >
*/ virtual ~memory_resource() = default;
/* Inherited from thrust::mr::memory_resource< Upstream::pointer >
*/ _CCCL_NODISCARD pointer allocate(std::size_t bytes, std::size_t alignment = alignof(std::max_align_t));
/* Inherited from thrust::mr::memory_resource< Upstream::pointer >
*/ void deallocate(pointer p, std::size_t bytes, std::size_t alignment = alignof(std::max_align_t));
/* Inherited from thrust::mr::memory_resource< Upstream::pointer >
*/ _CCCL_HOST_DEVICE bool is_equal(const memory_resource & other) const;
/* Inherited from thrust::mr::memory_resource< Upstream::pointer >
*/ virtual _CCCL_HOST_DEVICE bool do_is_equal(const memory_resource & other) const; };
Member Types
Typedef thrust::mr::disjoint_synchronized_pool_resource::unsync_pool
typedef disjoint_unsynchronized_pool_resource< Upstream, Bookkeeper >unsync_pool;
Typedef thrust::mr::disjoint_synchronized_pool_resource::lock_t
typedef std::lock_guard< std::mutex >lock_t;
Typedef thrust::mr::disjoint_synchronized_pool_resource::void_ptr
typedef Upstream::pointervoid_ptr;
Member Functions
Function thrust::mr::disjoint_synchronized_pool_resource::get_default_options
static pool_options get_default_options();
Get the default options for a disjoint pool. These are meant to be a sensible set of values for many use cases, and as such, may be tuned in the future. This function is exposed so that creating a set of options that are just a slight departure from the defaults is easy.
Function thrust::mr::disjoint_synchronized_pool_resource::disjoint_synchronized_pool_resource
disjoint_synchronized_pool_resource(Upstream * upstream, Bookkeeper * bookkeeper, pool_options options = get_default_options());
Constructor.
Function Parameters:
upstream
the upstream memory resource for allocationsbookkeeper
the upstream memory resource for bookkeepingoptions
pool options to use
Function thrust::mr::disjoint_synchronized_pool_resource::disjoint_synchronized_pool_resource
disjoint_synchronized_pool_resource(pool_options options = get_default_options());
Constructor. Upstream and bookkeeping resources are obtained by calling get_global_resource
for their types.
Function Parameters: options
: pool options to use
Function thrust::mr::disjoint_synchronized_pool_resource::release
void release();
Releases all held memory to upstream.
Function thrust::mr::disjoint_synchronized_pool_resource::do_allocate
virtual _CCCL_NODISCARD void_ptr do_allocate(std::size_t bytes, std::size_t alignment = alignof(std::max_align_t)) override;
Allocates memory of size at least bytes
and alignment at least alignment
.
Function Parameters:
bytes
size, in bytes, that is requested from this allocationalignment
alignment that is requested from this allocation
Returns: A pointer to void to the newly allocated memory.
Exceptions: thrust::bad_alloc
: when no memory with requested size and alignment can be allocated.
Implements: do_allocate
Function thrust::mr::disjoint_synchronized_pool_resource::do_deallocate
virtual void do_deallocate(void_ptr p, std::size_t bytes, std::size_t alignment = alignof(std::max_align_t)) override;
Deallocates memory pointed to by p
.
Function Parameters:
p
pointer to be deallocatedbytes
the size of the allocation. This must be equivalent to the value ofbytes
that was passed to the allocation function that returnedp
.alignment
the size of the allocation. This must be equivalent to the value ofalignment
that was passed to the allocation function that returnedp
.
Implements: do_deallocate