一、线程互斥方式。 --- 互斥锁
1、什么是互斥锁?特点怎么样?
互斥锁是专门用于处理线程之间互斥的一种方式,它有两种:上锁状态/解锁状态。
如果互斥锁处于上锁状态,那么再上锁就会阻塞,直到这把锁解开之后,才能上锁。
如果互斥锁处于解锁状态,那么再解锁依然可以的,不会阻塞。
2、 互斥锁函数接口?
1)定义互斥锁变量 -> 数据类型: pthread_mutex_t
pthread_mutex_t m;
2)初始化互斥锁。 -> pthread_mutex_init() -> man 3 pthread_mutex_init
动态初始化:
头文件:
#include <pthread.h>
原型:
int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *mutexattr);
参数:
mutex:互斥锁变量的地址。
mutexattr:普通属性,填NULL。
返回值:
成功:0
失败:非0
静态初始化:
pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;
只要把该宏定义赋值给互斥锁变量,就等价于初始化了这把互斥锁。
========================
也就是说:
pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;
等价于
pthread_mutex_t m;
pthread_mutex_init(&m,NULL);
3)上锁。 -> pthread_mutex_lock() -> man 3 pthread_mutex_lock
头文件:
#include <pthread.h>
原型:
int pthread_mutex_lock(pthread_mutex_t *mutex);
参数:
mutex:互斥锁变量的地址。
返回值:
成功:0
失败:非0
4)解锁。 -> pthread_mutex_unlock() -> man 3 pthread_mutex_unlock
头文件:
#include <pthread.h>
原型:
int pthread_mutex_unlock(pthread_mut