Linux多線程開發-線程同步-互斥鎖

1、互斥鎖

同一時刻只允許一個線程對臨界區進行訪問。POSIX庫中用類型pthread_mutex_t來定義互斥鎖,類型在pthreadtypes.h中定義。

2、如何聲明一個互斥鎖

#include <pthread.h>

pthread_mutex_t mutex;

3、如何初始化一個互斥鎖

//靜態初始化互斥鎖
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;

//動態初始化互斥鎖
pthread_mutex_t mutex;
pthread_mutex_init(&mutex,NULL);

靜態初始化的互斥鎖不需要銷燬,動態初始化的互斥鎖需要銷燬,銷燬函數聲明如下:

int pthread_mutex_destroy(pthread_mutex_t *mutex);

4、如何上鎖和解鎖

//上鎖方式1,程序進入臨界區,如果已經上鎖,則阻塞等待
int pthread_mutex_lock(pthread_mutex_t *mutex);

//上鎖方式2,程序進入臨界區,如果已經上鎖,不阻塞,返回EBUSY
int pthread_mutex_trylock(pthread_mutex_t *mutex);

//解鎖,程序退出臨界區
int pthread_mutex_unlock(pthread_mutex_t *mutex);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章