linux 线程类,mysql源码---核心类 (1)线程类

这篇博客介绍了MySQL中线程的重要性和线程与连接的1:1对应关系。线程初始化过程包括设置线程ID、优先级以及系统变量,并且涉及到THD对象的初始化。线程的优先级可以通过定义如INTERRUPT_PRIOR和QUERY_PRIOR来设定。此外,还提到了线程清理等相关函数。博客内容对于理解MySQL内部工作原理,特别是线程管理方面很有帮助。
摘要由CSDN通过智能技术生成

线程是mysql一个很重要的概念。线程用来处理来自客户端的连接,线程和连接是1:1的关。线程和THD对象也是1:1对应的关系,有些线程会被设置为优先,而有些线程没有优先级,而线程的优先级设置在sql/mysql_priv.h

#define INTERRUPT_PRIOR -2

#define CONNECT_PRIOR-1

#define WAIT_PRIOR0

#define QUERY_PRIOR2

(THD是mysql线程描述符类)

线程初始化工作:

void THD::init(void)

{

pthread_mutex_lock(&LOCK_global_system_variables);

plugin_thdvar_init(this);

variables.time_format= date_time_format_copy((THD*) 0,

variables.time_format);

variables.date_format= date_time_format_copy((THD*) 0,

variables.date_format);

variables.datetime_format= date_time_format_copy((THD*) 0,

variables.datetime_format);

/*

variables= global_system_variables above has reset

variables.pseudo_thread_id to 0. We need to correct it here to

avoid temporary tables replication failure.

*/

variables.pseudo_thread_id= thread_id;

pthread_mutex_unlock(&LOCK_global_system_variables);

server_status= SERVER_STATUS_AUTOCOMMIT;

if (variables.sql_mode & MODE_NO_BACKSLASH_ESCAPES)

server_status|= SERVER_STATUS_NO_BACKSLASH_ESCAPES;

options= thd_startup_options;

if (variables.max_join_size == HA_POS_ERROR)

options |= OPTION_BIG_SELECTS;

else

options &= ~OPTION_BIG_SELECTS;

transaction.all.modified_non_trans_table= transaction.stmt.modified_non_trans_table= FALSE;

open_options=ha_open_options;

update_lock_default= (variables.low_priority_updates ?

TL_WRITE_LOW_PRIORITY :

TL_WRITE);

session_tx_isolation= (enum_tx_isolation) variables.tx_isolation;

update_charset();

reset_current_stmt_binlog_row_based();

bzero((char *) &status_var, sizeof(status_var));

sql_log_bin_toplevel= options & OPTION_BIN_LOG;

#if defined(ENABLED_DEBUG_SYNC)

/* Initialize the Debug Sync Facility. See debug_sync.cc. */

debug_sync_init_thread(this);

#endif /* defined(ENABLED_DEBUG_SYNC) */

}

还有一些cleanup等函数,走在该文件中实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值