Linux—互斥锁
一、铺垫
pthread_mutex_t :pthread库的内置类型;创建了一把锁;
查看定义、里面的东西好多;暂时看不懂;记住用之前初始化就可以了
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
//使用宏来初始化锁;
二、 pthread_mutex_init()
pthread_mutex_init()初始化互斥锁
int pthread_mutex_init(pthread_mutex_t *restrict mutex,
const pthread_mutexattr_t *restrict attr);
参数:
第一个参数:锁的地址;
第二个参数:设为nullptr,默认属性;代表锁的属性
三、pthread_mutex_destroy()
pthread_mutex_destroy()销毁锁
int pthread_mutex_destroy(pthread_mutex_t *mutex);
四、上锁、解锁
int pthread_mutex_lock(pthread_mutex_t *mutex);
int pthread_mutex_trylock(pthread_mutex_t *mutex);
int pthread_mutex_unlock(pthread_mutex_t *mutex);
成功返回0,失败返回对应的错误码;
lock为阻塞式函数,若抢不到锁,则会一直申请锁;阻塞到这个地方,知道抢到锁为止;
trylock为非阻塞式函数;抢到锁返回0;失败返回错误码;使用此函数,必须在逻辑上搞清楚