MySQL 9.3.0
Source Code Documentation
jit_executor::Pool< T > Class Template Reference

Generic implementation of a pool. More...

#include <jit_executor_context_pool.h>

Public Member Functions

 Pool (size_t size, const std::function< T(size_t)> &factory, const std::function< void(T)> &destructor={})
 
T get ()
 
void release (T ctx)
 
void teardown ()
 
size_t active_items () const
 
void discard (T ctx, bool set_contention_mode)
 Discards the affected context and turns ON contention mode for the pool. More...
 

Private Member Functions

void increase_active_items ()
 
void decrease_active_items (bool set_contention_mode=false)
 

Private Attributes

std::mutex m_mutex
 
std::condition_variable m_item_availability
 
bool m_teardown = false
 
size_t m_pool_size
 
std::deque< Tm_items
 
std::function< T(size_t id)> m_item_factory
 
std::function< void(T)> m_item_destructor
 
size_t m_active_items = 0
 
size_t m_created_items = 0
 
bool m_contention_mode = false
 

Detailed Description

template<class T>
class jit_executor::Pool< T >

Generic implementation of a pool.

Constructor & Destructor Documentation

◆ Pool()

template<class T >
jit_executor::Pool< T >::Pool ( size_t  size,
const std::function< T(size_t)> &  factory,
const std::function< void(T)> &  destructor = {} 
)
inlineexplicit

Member Function Documentation

◆ active_items()

template<class T >
size_t jit_executor::Pool< T >::active_items ( ) const
inline

◆ decrease_active_items()

template<class T >
void jit_executor::Pool< T >::decrease_active_items ( bool  set_contention_mode = false)
inlineprivate

◆ discard()

template<class T >
void jit_executor::Pool< T >::discard ( T  ctx,
bool  set_contention_mode 
)
inline

Discards the affected context and turns ON contention mode for the pool.

◆ get()

template<class T >
T jit_executor::Pool< T >::get ( )
inline

◆ increase_active_items()

template<class T >
void jit_executor::Pool< T >::increase_active_items ( )
inlineprivate

◆ release()

template<class T >
void jit_executor::Pool< T >::release ( T  ctx)
inline

◆ teardown()

template<class T >
void jit_executor::Pool< T >::teardown ( )
inline

Member Data Documentation

◆ m_active_items

template<class T >
size_t jit_executor::Pool< T >::m_active_items = 0
private

◆ m_contention_mode

template<class T >
bool jit_executor::Pool< T >::m_contention_mode = false
private

◆ m_created_items

template<class T >
size_t jit_executor::Pool< T >::m_created_items = 0
private

◆ m_item_availability

template<class T >
std::condition_variable jit_executor::Pool< T >::m_item_availability
private

◆ m_item_destructor

template<class T >
std::function<void(T)> jit_executor::Pool< T >::m_item_destructor
private

◆ m_item_factory

template<class T >
std::function<T(size_t id)> jit_executor::Pool< T >::m_item_factory
private

◆ m_items

template<class T >
std::deque<T> jit_executor::Pool< T >::m_items
private

◆ m_mutex

template<class T >
std::mutex jit_executor::Pool< T >::m_mutex
private

◆ m_pool_size

template<class T >
size_t jit_executor::Pool< T >::m_pool_size
private

◆ m_teardown

template<class T >
bool jit_executor::Pool< T >::m_teardown = false
private

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