本文介紹如在在多執行緒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...