先来说一下条件变量的概念:
- 条件变量是一种相对复杂的线程同步的方法
- 条件变量允许线程睡眠,直到满足某种条件
- 当满足条件的时候,可以向该线程信号,通知唤醒
解释条件变量,还是应用到之前使用过的生产者-消费者模型:
简单来说,当缓冲区小于等于0的时候,不允许消费者消费,消费者必须等待,当缓冲区满的时候,不允许生产者往缓冲区生产,生产者必须等待。
现在我们使用了条件变量,就可以针对这个模型施加更加细节的约束。
1. 当缓冲区为0后,生产者生产一个产品的时候,立刻唤醒可能等待的消费者。
2. 当缓冲区为满了后,当消费者消费一个产品的时候,立刻唤醒可能等待的生产者。