Linux下条件变量详解

条件变量可以让线程在满足特定的条件下暂停(睡眠),需要与互斥量配合使用。

pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
通过宏对条件变量初始化

int pthread_cond_init (pthread_cond_t cond,pthread_condattr_t cond_attr);
 功能:初始化条件变量
 cond:待初始化的条件变量
 cond_attr:条件变量的属性
int pthread_cond_destroy(pthread_cond_t *cond);
功能:销毁条件变量
int pthread_cond_wait (pthread_cond_t *cond,pthread_mutex_t *mutex);
 功能:让调用者线程进入睡眠,并解锁一个互斥量
 cond:线程睡入的条件变量
 mutex:线程睡眠前的要解锁的互斥量(是不是锁定状态没有关系)
int pthread_cond_signal(pthread_cond_t *cond);
 功能:唤醒条件变量中的一个线程
 注意:线程醒的前提条件是互斥量必须是解锁状态的,线程醒前会再次加锁,如果不能加锁就不会醒来。
int pthread_cond_timedwait (pthread_cond_t *cond,pthread_mutex_t *mutex,struct timespec abstime)
 功能:让调用者线程进入睡眠(指定睡眠时间),并解锁一个互斥量
 注意:使用的是系统时间。

你可能感兴趣的:(Linux)