一、互斥锁:
1、互斥锁基本原理:
互斥锁是一个二元变量,其状态为开锁(允许0)和上锁(禁止1),将某个共享资源与某个特定互斥锁在逻辑上绑定(要申请该资源必须先获取锁)。
(1)访问公共资源前,必须申请该互斥锁,若处于开锁状态,则申请到锁对象,并立即占有该锁,以防止其他线程访问该资源;如果该互斥锁处于锁定状态,则阻塞当前线程。
(2)只有锁定该互斥锁的进程才能释放该互斥锁,其他线程试图释放无效。
2、初始化互斥锁:
使用之前,需要定义互斥锁,使用函数:pthread_mutex_t lock;进行定义。
初始化锁:
extern int pthread_mutex_init(pthread_mutex_t *_mutex,_const pthread_mutex_mutexattr_t* _mutexattr)
第一个参数mutex指要初始化的互斥锁的指针。
第二个参数mutexattr是指向对象的指针,如果该属性为空,则使用默认的属性。
全用宏PTHREAD_MUTEX_INITIALIZER来初始化静态分配的互斥锁(全局锁);
3、申请互斥锁
如果一个线程要占用共享资源,必须先申请对应互斥锁,使用函数:
exter