MySQL 9.4.0
Source Code Documentation
jit_executor::ContextPool Class Referencefinal

#include <jit_executor_context_pool.h>

Public Member Functions

 ContextPool (CommonContext *common_context)
 
 ~ContextPool ()
 
std::shared_ptr< PooledContextHandleget_context ()
 
void teardown ()
 

Private Member Functions

void release (IContext *ctx)
 
void release_thread ()
 
void increase_active_items ()
 
void decrease_active_items ()
 
bool can_create ()
 
IContextcreate ()
 
void destroy (IContext *ctx)
 
void do_release (IContext *ctx)
 
void discard (IContext *ctx)
 
void do_teardown ()
 
IContextcreate (size_t id)
 
IContextget ()
 

Private Attributes

CommonContextm_common_context
 
mysql_harness::WaitingMPSCQueue< IContext * > m_release_queue
 
std::unique_ptr< std::thread > m_release_thread
 
std::mutex m_mutex
 
std::condition_variable m_item_availability
 
bool m_teardown = false
 
std::deque< IContext * > m_items
 
size_t m_active_items = 0
 
size_t m_created_items = 0
 
std::atomic_bool m_forbid_context_creation = false
 

Friends

class PooledContextHandle
 

Constructor & Destructor Documentation

◆ ContextPool()

jit_executor::ContextPool::ContextPool ( CommonContext common_context)

◆ ~ContextPool()

jit_executor::ContextPool::~ContextPool ( )

Member Function Documentation

◆ can_create()

bool jit_executor::ContextPool::can_create ( )
private

◆ create() [1/2]

IContext * jit_executor::ContextPool::create ( )
private

◆ create() [2/2]

IContext * jit_executor::ContextPool::create ( size_t  id)
private

◆ decrease_active_items()

void jit_executor::ContextPool::decrease_active_items ( )
private

◆ destroy()

void jit_executor::ContextPool::destroy ( IContext ctx)
private

◆ discard()

void jit_executor::ContextPool::discard ( IContext ctx)
private

◆ do_release()

void jit_executor::ContextPool::do_release ( IContext ctx)
private

◆ do_teardown()

void jit_executor::ContextPool::do_teardown ( )
private

◆ get()

IContext * jit_executor::ContextPool::get ( )
private

◆ get_context()

std::shared_ptr< PooledContextHandle > jit_executor::ContextPool::get_context ( )

◆ increase_active_items()

void jit_executor::ContextPool::increase_active_items ( )
private

◆ release()

void jit_executor::ContextPool::release ( IContext ctx)
private

◆ release_thread()

void jit_executor::ContextPool::release_thread ( )
private

◆ teardown()

void jit_executor::ContextPool::teardown ( )

Friends And Related Function Documentation

◆ PooledContextHandle

friend class PooledContextHandle
friend

Member Data Documentation

◆ m_active_items

size_t jit_executor::ContextPool::m_active_items = 0
private

◆ m_common_context

CommonContext* jit_executor::ContextPool::m_common_context
private

◆ m_created_items

size_t jit_executor::ContextPool::m_created_items = 0
private

◆ m_forbid_context_creation

std::atomic_bool jit_executor::ContextPool::m_forbid_context_creation = false
private

◆ m_item_availability

std::condition_variable jit_executor::ContextPool::m_item_availability
private

◆ m_items

std::deque<IContext *> jit_executor::ContextPool::m_items
private

◆ m_mutex

std::mutex jit_executor::ContextPool::m_mutex
private

◆ m_release_queue

mysql_harness::WaitingMPSCQueue<IContext *> jit_executor::ContextPool::m_release_queue
private

◆ m_release_thread

std::unique_ptr<std::thread> jit_executor::ContextPool::m_release_thread
private

◆ m_teardown

bool jit_executor::ContextPool::m_teardown = false
private

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