另一种用在多线程中的同步访问的方法是使用互斥量,它允许程序员锁住某个对象,使得每次只有一个对象访问它。为了控制对关键代码的访问,必须在进入这段代码之前锁住一个互斥量,然后在完成操作之后解锁他。
用于互斥量的基本函数和用于信号量的函数非常相似,他们的定义如下:
#include<pthread.h>
/*
*以下代码成功时返回0失败时返回错误代码
*但是这些函数不设置errno,所以必须对函数的返回代码进行检查
*/
int pthread_mutex_init(pthread_mutex_t* mutex,const pthread_mutexattr_t* mutexattr);
int pthread_mutex_lock(pthread_mutex_t* mutex);
int pthread_mutex_unlock(pthread_mutex_t* mutex);
int pthread_mutex_destroy(pthread_mutex_t* mutex);
/*
*与信号量类似,这些函数的参数都是一个先前声明过的对象指针。
*对互斥量来说,这个对象的类型为pthread_mutex_t。
*/