Mysql 中互斥鎖的使用

2021-06-28 06:54:30 字數 1055 閱讀 2202

本文介紹如在在多執行緒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函式,絕大部

//分的鎖物件都在這裡銷毀

互斥鎖pthread mutex t的使用

2011 01 27 10 22 07 分類 linux 標籤 字型大小 大中小訂閱 1.互斥鎖建立 有兩種方法建立互斥鎖,靜態方式和動態方式。posix定義了乙個巨集pthread mutex initializer來靜態初始化互斥鎖,方法如下 pthread mutex t mutex pthr...

互斥鎖pthread mutex t的使用

1.互斥鎖建立 有兩種方法建立互斥鎖,靜態方式和動態方式。posix定義了乙個巨集pthread mutex initializer來靜態初始化互斥鎖,方法如下 pthread mutex t mutex pthread mutex initializer 在linuxthreads實現中,pthr...

互斥鎖pthread mutex t的使用

互斥鎖建立 有兩種方法建立互斥鎖,靜態方式和動態方式。posix定義了乙個巨集pthread mutex initializer來靜態初始化互斥鎖,方法如下 pthread mutex t mutex pthread mutex initializer 在linuxthreads實現中,pthrea...