互斥:多线程环境下,当所有线程同时访问共享数据时,可能产生冲突,需要使在任一时刻有且只有一个线程访问其共享数据,保证其原子性。
线程中实现互斥可运用互斥锁(mutex)来实现,其可相当于进程之间的二元信号量:
函数如下:
#include <pthread.h>
//定义初始化一把互斥锁
pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER; //全局、静态用宏初始化
int pthread_mutex_init(pthread_mutex_t *restrict mutex,const pthread_mutexattr_t *restrict attr); //运用函数进行初始化
参数:
mutex:传入定义锁地址;
attr:互斥锁属性,一般设为NULL(默认属性).
int pthread_mutex_destroy(pthread_mutex_t* mutex); //销毁mutex锁
int pthread_mutex_lock(pthread_mutex_t* mutex); //加锁
int pthread_mutex_unlock(pthread_mutex_t* mutex); //解锁
int pthread_mutex_trylock(pthread_mutex_t* mutex); //尝试去加锁
<