您的位置:首页 > 数据库 > MySQL

Mysql 中互斥锁的使用

2015-01-18 20:14 260 查看
本文介绍如在在多线程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函数,绝大部

//分的锁对象都在这里销毁
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: