二十八、mutex线程互斥锁
1、pthread_mutex_init初始化互斥锁
1、头文件:#include<pthread.h>
2、函数原型:int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restrict attr);
3、函数形参: mutex:互斥锁地址(需自定义,如:pthread_mutex_t mutex;);
attr:互斥锁的属性(一般设置为NULL表示使用默认属性)。
注:(1)pthread_mutex_t是一个结构体类型,所以mutex实际上是一个结构体变量。
(2)attr也可设置一些互斥锁的特殊功能。
4、函数返回值:总是返回0,所以这个函数不需要进行出错处理。
5、注意事项:互斥锁尽量作为全局变量
2、pthread_mutex_(try/un)lock加锁/解锁操作
1、pthread_mutex_lock(&mutex)(阻塞加锁)访问临界区加锁操作。
2、pthread_mutex_trylock( &mutex)(非阻塞加锁),通常不使用。
注:与pthread_mutex_lock()类似,不同:锁已经被占据时返回 EBUSY 而不是挂起等待。
3、pthread_mutex_unlock(&mutex): 访问临界区解锁操。
注:mutex:互斥锁的地址。
3、pthread_mutex_destroy销毁互斥锁
1、头文件:#include<pthread.h>