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);