进程同步相关问题——生产者—消费者模型

150 阅读1分钟

生产者-消费者模型

# 描述问题

  • 有一群生产者生产产品,消费者去消费这些产品。

  • 为了使得生产者与消费者进程可以并发执行,中间设置一个 buffer,生产者将产品送到 buffer 中,消费者消费 buffer 的产品。

  • 当buffer 满时,生产者不可以存产品;当 buffer 空时,消费者不可以2 取产品。

  • 每个时刻,buffer 仅允许一个产品的存或取。

设置模型

三个信号量

  • full:表示放有产品的缓冲区的数量,初始值为 0。
  • empty::表示可用使用的缓冲区数量,其初始值为最大。
  • mutex:互斥信号,初始值为 1,表示各进程互斥进入临界区,任何时候只有一个进程进入缓冲区

环性队列

读写-写着模型

哲学家进餐模型

打瞌睡的理发师模型