作者:曾宏安,华清远见嵌入式学院讲师。
我们在编写多线程程序时经常需要在线程之间实现通信,常见的机制有信号量和互斥锁。这里再向大家介绍一种用于实现线程间同步的机制——条件变量。
条件变量可以使线程睡眠等待直到某个条件满足为止。条件变量基本使用操作有两种:一、当判断条件不满足时,某些线程睡眠在相应的条件变量上;二、某些线程改变了条件,唤醒睡眠在条件变量上的其他线程。
为了在判断或是改变条件时防止竞争,条件变量通常和互斥锁结合在一起使用。条件变量类型为pthread_cond_t,互斥锁类型为pthread_mutex_t。
条件变量的创建和注销
int pthread_cond_init(pthread_cond_t *restrict cond,pthread_condattr_t *restrict cond_attr); // 创建
int pthread_cond_destroy(pthread_cond_t *cond); // 注销
条件变量的等待和激活
int pthread_cond_wait(pthread_