diff options
author | Sergey Vojtovich <svoj@mariadb.org> | 2019-01-20 02:32:35 +0400 |
---|---|---|
committer | Sergey Vojtovich <svoj@mariadb.org> | 2019-01-28 17:39:07 +0400 |
commit | 3503fbbebf90cb0fe63993a66dad9bf97fb74c0a (patch) | |
tree | 1c39a1f4d4d694a8b2d1166cae48050fe82b6c1c /plugin/handler_socket | |
parent | 891be49a36ebb951cd90d64d1b4c1cc633af1fdf (diff) | |
download | mariadb-git-3503fbbebf90cb0fe63993a66dad9bf97fb74c0a.tar.gz |
Move THD list handling to THD_list
Implemented and integrated THD_list as a replacement for the global
thread list. It uses own mutex instead of LOCK_thread_count for THD
list protection.
Removed unused first_global_thread() and next_global_thread().
delayed_insert_threads is now protected by LOCK_delayed_insert. Although
this patch doesn't fix very wrong synchronization of this variable.
After this patch there are only 2 legitimate uses of LOCK_thread_count
left, both in mysqld.cc: thread_count and ready_to_exit.
Aim is to reduce usage of LOCK_thread_count and COND_thread_count.
Part of MDEV-15135.
Diffstat (limited to 'plugin/handler_socket')
-rw-r--r-- | plugin/handler_socket/handlersocket/database.cpp | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/plugin/handler_socket/handlersocket/database.cpp b/plugin/handler_socket/handlersocket/database.cpp index a76428b29d3..52ea8f2a8c4 100644 --- a/plugin/handler_socket/handlersocket/database.cpp +++ b/plugin/handler_socket/handlersocket/database.cpp @@ -280,7 +280,7 @@ dbcontext::init_thread(const void *stack_bottom, volatile int& shutdown_flag) DBG_THR(fprintf(stderr, "thread_stack = %p sizeof(THD)=%zu sizeof(mtx)=%zu " "O: %zu %zu %zu %zu %zu %zu %zu\n", - thd->thread_stack, sizeof(THD), sizeof(LOCK_thread_count), + thd->thread_stack, sizeof(THD), sizeof(mysql_mutex_t), DENA_THR_OFFSETOF(mdl_context), DENA_THR_OFFSETOF(net), DENA_THR_OFFSETOF(LOCK_thd_data), @@ -307,7 +307,7 @@ dbcontext::init_thread(const void *stack_bottom, volatile int& shutdown_flag) } { thd->thread_id = next_thread_id(); - add_to_active_threads(thd); + server_threads.insert(thd); } DBG_THR(fprintf(stderr, "HNDSOCK init thread wsts\n")); @@ -341,10 +341,8 @@ dbcontext::term_thread() close_tables_if(); my_pthread_setspecific_ptr(THR_THD, 0); { - pthread_mutex_lock(&LOCK_thread_count); delete thd; thd = 0; - pthread_mutex_unlock(&LOCK_thread_count); my_thread_end(); } } |