mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
WL#5363: Thread Pool Service Interface
In order to allow thread schedulers to be dynamically loaded, it is necessary to make the following changes to the server: - Two new service interfaces - Modifications to InnoDB to inform the thread scheduler of state changes. - Changes to the VIO subsystem for checking if data is available on a socket. - Elimination of remains of the old thread pool implementation. The two new service interfaces introduces are: my_thread_scheduler A service interface to register a thread scheduler. thd_wait A service interface to inform thread scheduler that the thread is about to start waiting. In addition, the patch adds code that: - Add a call to thd_wait for table locks in mysys thd_lock.c by introducing a set function that can be used to set a callback to be used when waiting on a lock and resuming from waiting. - Calling the mysys set function from the server to set the callbacks correctly.
This commit is contained in:
@ -36,9 +36,23 @@ static struct thd_alloc_service_st thd_alloc_handler= {
|
||||
thd_make_lex_string
|
||||
};
|
||||
|
||||
static struct thd_wait_service_st thd_wait_handler= {
|
||||
thd_wait_begin,
|
||||
thd_wait_end
|
||||
};
|
||||
|
||||
static struct my_thread_scheduler_service my_thread_scheduler_handler= {
|
||||
my_thread_scheduler_set,
|
||||
my_thread_scheduler_reset,
|
||||
};
|
||||
|
||||
|
||||
static struct st_service_ref list_of_services[]=
|
||||
{
|
||||
{ "my_snprintf_service", VERSION_my_snprintf, &my_snprintf_handler },
|
||||
{ "thd_alloc_service", VERSION_thd_alloc, &thd_alloc_handler }
|
||||
{ "thd_alloc_service", VERSION_thd_alloc, &thd_alloc_handler },
|
||||
{ "thd_wait_service", VERSION_thd_wait, &thd_wait_handler },
|
||||
{ "my_thread_scheduler_service",
|
||||
VERSION_my_thread_scheduler, &my_thread_scheduler_handler },
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user