mysql mutex_Mysql 中互斥锁的使用

本文介绍如在在多线程mysql代码开发中使用互斥锁。

mysql自己对c++的mutex又进行了一次封装,封装的代码可以在include/mysql/psi/mysql_thread.h  中找到。

下面大概地介绍下如何使用互斥锁。锁的生命周期大体为: 初始化锁-> *(上锁->解锁)->销毁锁。注 “*” 表示0个或多个。

初始化锁代码如下:

1.首先声明锁变量和 key变量, key是一个整型值

PSI_mutex_key key_dispatch;

mysql_mutex_t dispatch_mutex;            //mysql_mutex_t是mysql封装的一个结构体,里面包含了c++的pthread_mutex_t

//这个一般在mysqld.cc中定义, 并且在mysqld.h中声明 extern

2.初始化锁

mysql_mutex_init(key_dispatch, &dispatch_mutex, MY_MUTEX_INIT_FAST);   //这个也一般在mydqld.cc中初始化, 在mysqld.cc中有一个

//init_thread_environment函数,绝大多数的锁对象都在这

//里初始化

上锁代码如下:

mysql_mutex_lock(&dispatch_mutex);                      //这个在具体操作需要锁的代码块前添加

解锁代码如下:

mysql_mutex_unlock(&dispatch_mutex);//这个在具体操作需要锁的代码块前添加

销毁锁的代码如下:

mysql_mutex_destroy(&dispatch_mutex);            //这个也一般在mydqld.cc中销毁,在mysqld.cc中有一个clean_up_mutexes函数,绝大部

//分的锁对象都在这里销毁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值