一.条件变量
条件变量是用来等待线程而不是上锁的,条件变量通常和互斥锁一起使用。条件变量之所以要和互斥锁一起使用,主要是因为互斥锁的一个明显的特点就是它只有两种状态:锁定和非锁定,而条件变量可以通过允许线程阻塞和等待另一个线程发送信号来弥补互斥锁的不足,所以互斥锁和条件变量通常一起使用。
当条件满足的时候,线程通常解锁并等待该条件发生变化,一旦另一个线程修改了环境变量,就会通知相应的环境变量唤醒一个或者多个被这个条件变量阻塞的线程。这些被唤醒的线程将重新上锁,并测试条件是否满足。一般来说条件变量被用于线程间的同步;当条件不满足的时候,允许其中的一个执行流挂起和等待。
条件变量中常用的API:
1).条件变量类型为:pthread_cond_t ,类似互斥变量,条件变量的初始化有两种方式:
静态:pthread_cond_t mycon=PTHREAD_COND_INITIALIZER;
动态:通过调用pthread_cond_init函数,函数原型为:
静态:pthread_cond_t mycon=PTHREAD_COND_INITIALIZER;
cond:环境变量.
attr:条件变量属性.
成功返回0,失败返回错误码.
2).条件变量摧毁函数:pthread_cond_destroy(&mycond);
int pthread_cond_destroy(pthread_cond_t *cond);
成功返回0,失败返