链表 环形 生产者消费者模型

       生产者消费者问题(英语:Producer-consumer problem),也称有限缓冲问题(英语:Bounded-buffer problem),是一个多线程同步问题的经典案例。该问题描述了两个共享固定大小缓冲区线程——即所谓的“生产者”和“消费者”——在实际运行时会发生的问题。生产者的主要作用是生成一定量的数据放到缓冲区中,然后重复此过程。与此同时,消费者也在缓冲区消耗这些数据。该问题的关键就是要保证生产者不会在缓冲区满时加入数据,消费者也不会在缓冲区中空时消耗数据。

生产者消费者遵循 3,2,1 原则:

三种关系:生产者与生产者  互斥

                  消费者与消费者  互斥

                  生产者与消费者   同步 互斥

二种角色       :生产者

                        消费者

一个交易场所: 链表或者队列(接下来的模型中)

链表模型
链表 环形 生产者消费者模型
链表 环形 生产者消费者模型
链表 环形 生产者消费者模型
链表 环形 生产者消费者模型
链表 环形 生产者消费者模型
链表 环形 生产者消费者模型
运行结果:
链表 环形 生产者消费者模型

链表 环形 生产者消费者模型

下面写一个环形队列的单生产者单消费者模型:



链表 环形 生产者消费者模型 链表 环形 生产者消费者模型链表 环形 生产者消费者模型链表 环形 生产者消费者模型


从运行结果可以看出 当生产者把队列生产满了以后就停了下来(不套图),当消费者消费资源产生空间时,生产者继续生产。同理 如果让生产者生产的慢,消费者消费的快,消费者会一直等,生产者每生产一个,消费者就消费一个,生产者不生产,消费者就不能消费。(不超过)