目录
一、什么是互斥锁
保证线程安全的一种锁机制,在同一时刻,只允许一个执行流去访问临界资源。
二、为什么需要互斥锁
由于CPU进行程序处理的时候并不会一次性将一个程序执行完毕,而是执行一个时间片之后会切换另外一个程序,这种方式也称位CPU的分时机制。正因为这种机制不能保证每一次的执行流都是原子操作,会导致程序出现二义性;互斥锁就是为了解决当多个执行流去访问共享资源的时候出现的二义性问题。
三、互斥锁的原理
本质上可以认为是一个计数器,在互斥锁的内部有一个计数器,实际上就是一个互斥量;计数器的取值只能是0或1,当一个线程去获取临界资源的时候,首先去获取互斥锁,当计数器的值为1的时候,表示当前的锁资源可以获取,当获取成功之后计数器的值就变成0,也就可以对临界资源进行访问修改;当计数器的值为0的时候,表示当前的锁资源不可以获取,就是没有获取到互斥锁,也就不可以访问临界资源,执行流就行阻塞等待。
四、互斥锁的相关接口
//初始化互斥锁
int pthread_mutex_init(pthread_mutex_t* mutex,pthread_mutexattr_t* attr)
//pthread_mutex_t* mute