Linux线程同步与互斥应用/生产者消费者模型
一,理论讲解
我们拿工厂,超市和消费者直接的关系来做讲解,首先人去超市买东西的过程就不用多说,但是超市本身是不能生产商品的,他们需要从各个不同的工厂进货商品,然后再给消费者买,以计算机的角度来看的话超市就是一个具有缓存的数据结构,工厂和消费者就是线程:(工厂等于生产者)
当一个生产者往缓冲区写入数据的时候,其他生产者得等他放完数据之后才能再往里面写数据,消费者也一样,当消费者去超市买东西的时候,其他消费者也不能进去买东西,除此之外还有一个问题,当工厂怎么知道缓冲区的容量是否已经满了?消费者怎么知道超市里有没有东西买?其实可以利用同步的特性去解决,当工厂进货时可以提醒消费者消费了j,消费者在买东西的时候如果看到货架空了,可以提醒工厂该进货了
提炼:
1,共享或者临界资源
2,我们要研究生产消费者模型,就得研究多个生产,多个消费的同步互斥关系
3,生产者和生产者:互斥关系
消费者和消费者:互斥关系
生产者和消费者:互斥&&同步关系
总结:三种关系,两种角色,一个交易所