Vowpal Wabbit
Public Member Functions | Public Attributes | List of all members
VW::object_pool< T, TInitializer, TCleanup > Struct Template Reference

#include <object_pool.h>

Public Member Functions

 object_pool ()=default
 
 object_pool (size_t initial_chunk_size, TInitializer initializer={}, size_t chunk_size=8)
 
void return_object (T *obj)
 
T * get_object ()
 
bool empty () const
 
size_t size () const
 
bool is_from_pool (T *obj) const
 

Public Attributes

std::mutex m_lock
 
no_lock_object_pool< T, TInitializer, TCleanup > inner_pool
 

Detailed Description

template<typename T, typename TInitializer, typename TCleanup = default_cleanup<T>>
struct VW::object_pool< T, TInitializer, TCleanup >

Definition at line 166 of file object_pool.h.

Constructor & Destructor Documentation

◆ object_pool() [1/2]

template<typename T, typename TInitializer, typename TCleanup = default_cleanup<T>>
VW::object_pool< T, TInitializer, TCleanup >::object_pool ( )
default

◆ object_pool() [2/2]

template<typename T, typename TInitializer, typename TCleanup = default_cleanup<T>>
VW::object_pool< T, TInitializer, TCleanup >::object_pool ( size_t  initial_chunk_size,
TInitializer  initializer = {},
size_t  chunk_size = 8 
)
inline

Definition at line 169 of file object_pool.h.

169  {}, size_t chunk_size = 8)
170  : inner_pool(initial_chunk_size, initializer, chunk_size)
171  {
172  }
no_lock_object_pool< T, TInitializer, TCleanup > inner_pool
Definition: object_pool.h:193

Member Function Documentation

◆ empty()

template<typename T, typename TInitializer, typename TCleanup = default_cleanup<T>>
bool VW::object_pool< T, TInitializer, TCleanup >::empty ( ) const
inline

Definition at line 186 of file object_pool.h.

Referenced by free_parser().

186 { return inner_pool.empty(); }
no_lock_object_pool< T, TInitializer, TCleanup > inner_pool
Definition: object_pool.h:193

◆ get_object()

template<typename T, typename TInitializer, typename TCleanup = default_cleanup<T>>
T* VW::object_pool< T, TInitializer, TCleanup >::get_object ( )
inline

Definition at line 180 of file object_pool.h.

Referenced by free_parser(), and VW::get_unused_example().

181  {
182  std::unique_lock<std::mutex> lock(m_lock);
183  return inner_pool.get_object();
184  }
no_lock_object_pool< T, TInitializer, TCleanup > inner_pool
Definition: object_pool.h:193
std::mutex m_lock
Definition: object_pool.h:192

◆ is_from_pool()

template<typename T, typename TInitializer, typename TCleanup = default_cleanup<T>>
bool VW::object_pool< T, TInitializer, TCleanup >::is_from_pool ( T *  obj) const
inline

Definition at line 190 of file object_pool.h.

Referenced by VW::is_ring_example().

190 { return inner_pool.is_from_pool(obj); }
no_lock_object_pool< T, TInitializer, TCleanup > inner_pool
Definition: object_pool.h:193

◆ return_object()

template<typename T, typename TInitializer, typename TCleanup = default_cleanup<T>>
void VW::object_pool< T, TInitializer, TCleanup >::return_object ( T *  obj)
inline

Definition at line 174 of file object_pool.h.

Referenced by VW::clean_example().

175  {
176  std::unique_lock<std::mutex> lock(m_lock);
177  inner_pool.return_object(obj);
178  }
no_lock_object_pool< T, TInitializer, TCleanup > inner_pool
Definition: object_pool.h:193
std::mutex m_lock
Definition: object_pool.h:192

◆ size()

template<typename T, typename TInitializer, typename TCleanup = default_cleanup<T>>
size_t VW::object_pool< T, TInitializer, TCleanup >::size ( ) const
inline

Definition at line 188 of file object_pool.h.

188 { return inner_pool.size(); }
no_lock_object_pool< T, TInitializer, TCleanup > inner_pool
Definition: object_pool.h:193

Member Data Documentation

◆ inner_pool

template<typename T, typename TInitializer, typename TCleanup = default_cleanup<T>>
no_lock_object_pool<T, TInitializer, TCleanup> VW::object_pool< T, TInitializer, TCleanup >::inner_pool

Definition at line 193 of file object_pool.h.

◆ m_lock

template<typename T, typename TInitializer, typename TCleanup = default_cleanup<T>>
std::mutex VW::object_pool< T, TInitializer, TCleanup >::m_lock

Definition at line 192 of file object_pool.h.


The documentation for this struct was generated from the following file: