Linux多线程开发-线程同步-互斥锁pthread_mutex_t

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版权协议,转载请附上原文出处链接和本声明。