1、互斥锁
用于解决竞争问题的一种机制。
什么是竞争,竞争就是多个实体同时获取一个资源,例如多个线程写一个全局变量。
2、Linux如何使用互斥锁
以pthread为例,锁的创建和使用如下:
2.1、创建互斥锁
1)使用静态方式创建锁
pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
PTHREAD_MUTEX_INITIALIZER是一个宏,携带了锁的所有默认参数。
2)使用动态方式创建锁:
pthread_mutex_t lock = NULL;
pthread_mutex_init(&lock, NULL);
静态方式适用于创建全局资源锁,注意用语,锁本身是全局资源。动态方式则更加灵活,它可以在任务中创建锁,也可以创建使用malloc申请内存资源的锁。
2.2、互斥锁的使用
1)加锁
/* 加锁*/
pthread_mutex_lock(&lock);
2)解锁
/* 解锁 */
pthread_mutex_unlock(&lock);
【注意事项】加锁解锁是一对影形不离的兄弟,必须成对出现
2.3、互斥锁的释放
pthread_mutexattr_destroy(&lock)
lock = NULL;