死锁
假如我有两个以上的锁,我线程1已经获得锁1,想要获得锁2,而我线程2已经获得锁2,想要获得锁1,现在双方都获取不到自己想要的东西,就会一直等待,这就是死锁。
线程同步
pthread_cond_t创建条件变量
pthread_cond_t cond; // 定义一个条件变量,是一个结构体
int pthread_cond_init(pthread_cond_t *restrict cond, const pthread_condattr_t *restrict attr);
brief:初始化条件变量(条件变量是利用全局变量进行同步的机制)
param:第一个参数是要初始化的条件变量,第二个参数,NULL
return:成功返回0 ,
pthread_cond_wait等待条件变量
int pthread_cond_wait(pthread_cond_t *restrict cond, pthread_mutex_t *restrict mutex);
brief:第一次调用会自动释放锁堵塞在这里等待被唤醒,被唤醒后自动上锁
param:第一个参数,条件变量的地址,第二个参数,锁的地址(条件变量必须配合互斥锁使用)
return:成功返回0
pthread_cond_signal唤醒线程
int pthread_cond_signal(pthread_cond_t *cond);
brief: