thrust::mr::synchronized_pool_resource
Defined in thrust/mr/sync_pool.h
- 
template<typename Upstream>
 struct synchronized_pool_resource : public thrust::mr::memory_resource<Upstream::pointer>
- 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 
 - Public Types - 
using unsync_pool = unsynchronized_pool_resource<Upstream>
 - Public Functions - 
inline synchronized_pool_resource(Upstream *upstream, pool_options options = get_default_options())
- Constructor. - Parameters
- upstream – the upstream memory resource for allocations 
- options – pool options to use 
 
 
 - 
inline synchronized_pool_resource(pool_options options = get_default_options())
- Constructor. The upstream resource is obtained by calling - get_global_resource<Upstream>.- Parameters
- options – pool options to use 
 
 - 
inline void release()
- Releases all held memory to upstream. 
 - 
inline virtual void_ptr do_allocate(std::size_t bytes, std::size_t alignment = THRUST_MR_DEFAULT_ALIGNMENT) override
- Allocates memory of size at least - bytesand alignment at least- alignment.- Parameters
- bytes – size, in bytes, that is requested from this allocation 
- alignment – alignment that is requested from this allocation 
 
- Throws
- thrust::bad_alloc – when no memory with requested size and alignment can be allocated. 
- Returns
- A pointer to void to the newly allocated memory. 
 
 - 
inline virtual void do_deallocate(void_ptr p, std::size_t n, std::size_t alignment = THRUST_MR_DEFAULT_ALIGNMENT) override
 - 
inline pointer allocate(std::size_t bytes, std::size_t alignment = THRUST_MR_DEFAULT_ALIGNMENT)
- Allocates memory of size at least - bytesand alignment at least- alignment.- Parameters
- bytes – size, in bytes, that is requested from this allocation 
- alignment – alignment that is requested from this allocation 
 
- Throws
- thrust::bad_alloc – when no memory with requested size and alignment can be allocated. 
- Returns
- A pointer to void to the newly allocated memory. 
 
 - 
inline void deallocate(pointer p, std::size_t bytes, std::size_t alignment = THRUST_MR_DEFAULT_ALIGNMENT) noexcept
- Deallocates memory pointed to by - p.- Parameters
- p – pointer to be deallocated 
- bytes – the size of the allocation. This must be equivalent to the value of - bytesthat was passed to the allocation function that returned- p.
- alignment – the alignment of the allocation. This must be equivalent to the value of - alignmentthat was passed to the allocation function that returned- p.
 
 
 - 
inline bool is_equal(const memory_resource &other) const noexcept
- Compares this resource to the other one. The default implementation uses identity comparison, which is often the right thing to do and doesn’t require RTTI involvement. - Parameters
- other – the other resource to compare this resource to 
- Returns
- whether the two resources are equivalent. 
 
 - 
virtual void do_deallocate(pointer p, std::size_t bytes, std::size_t alignment) = 0
- Deallocates memory pointed to by - p.- Parameters
- p – pointer to be deallocated 
- bytes – the size of the allocation. This must be equivalent to the value of - bytesthat was passed to the allocation function that returned- p.
- alignment – the size of the allocation. This must be equivalent to the value of - alignmentthat was passed to the allocation function that returned- p.
 
 
 - 
inline virtual bool do_is_equal(const memory_resource &other) const noexcept
- Compares this resource to the other one. The default implementation uses identity comparison, which is often the right thing to do and doesn’t require RTTI involvement. - Parameters
- other – the other resource to compare this resource to 
- Returns
- whether the two resources are equivalent. 
 
 - Public Static Functions - 
static inline 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.