线程最大的特点就是资源共享,然而资源共享中的同步问题是线程编程的难题。
三种方法:
1、互斥锁
2、条件变量
3、异步信号
初始化一个锁
int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restrict attr);
注销一个互斥锁
int pthread_mutex_destroy(pthread_mutex_t *mutex);
加锁,如果不成功,阻塞等待
pthread_mutex_lock(pthread_mutex_t *mutex);
解锁
int pthread_mutex_unlock(pthread_mutex_t *mutex);
测试加锁,如果不成功则立即返回
int pthread_mutex_trylock(pthread_mutex_t *mutex);
---------------------------------------------------------------------------------------------------
使用互斥锁之前必须初始化,有两种方法可以初始化
1、调用函数pthread_mutex_init,可以设置锁的属性(普通锁,嵌套锁,检错锁,适应锁)
2、静态赋值法:将宏结构常量复制给互斥锁
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;