Struct thrust::mr::synchronized_pool_resource

A mutex-synchronized version of 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

Inherits From: thrust::mr::memory_resource< Upstream::pointer >

#include <thrust/mr/sync_pool.h>
template <typename Upstream> struct thrust::mr::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();
  synchronized_pool_resource(Upstream * upstream,     pool_options options = get_default_options());
  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::synchronized_pool_resource::unsync_pool

typedef unsynchronized_pool_resource< Upstream >unsync_pool;

Typedef thrust::mr::synchronized_pool_resource::lock_t

typedef std::lock_guard< std::mutex >lock_t;

Typedef thrust::mr::synchronized_pool_resource::void_ptr

typedef Upstream::pointervoid_ptr;

Member Functions

Function thrust::mr::synchronized_pool_resource::get_default_options

static pool_options get_default_options(); Get the default options for a 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::synchronized_pool_resource::synchronized_pool_resource

synchronized_pool_resource(Upstream * upstream,   pool_options options = get_default_options()); Constructor.

Function Parameters:

  • upstream the upstream memory resource for allocations
  • options pool options to use

Function thrust::mr::synchronized_pool_resource::synchronized_pool_resource

synchronized_pool_resource(pool_options options = get_default_options()); Constructor. The upstream resource is obtained by calling get_global_resource<Upstream>.

Function Parameters: options: pool options to use

Function thrust::mr::synchronized_pool_resource::release

void release(); Releases all held memory to upstream.

Function thrust::mr::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 allocation
  • alignment 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::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 deallocated
  • bytes the size of the allocation. This must be equivalent to the value of bytes that was passed to the allocation function that returned p.
  • alignment the size of the allocation. This must be equivalent to the value of alignment that was passed to the allocation function that returned p.

Implements: do_deallocate