0. 头文件
#include <pthread.h>
1. 初始化
int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restrict attr);
简单的使用可以使用默认的属性初始化互斥量,第二个参数设置为NULL即可。
2. 销毁
int pthread_mutex_destroy(pthread_mutex_t *mutex);
3. 加解锁
int pthread_mutex_lock(pthread_mutex_t *mutex);
int pthread_mutex_unlock(pthread_mutex_t *mutex);
int pthread_mutex_trylock(pthread_mutex_t *mutex);
函数pthread_mutex_trylock会尝试对互斥量加锁,如果该互斥量已经被锁住,函数调用失败,返回EBUSY,否则加锁成功返回0,线程不会被阻塞。
int pthread_mutex_timedlock(pthread_mutex_t *restrict mutex, const struct timesec *restrict tsptr);
pthread_mutex_timedlock
函数允许线程阻塞特定时间,如果加锁失败就会返回ETIMEDOUT,从而避免死锁。