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