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);
版权声明:本文为u010058695原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。