跳转至

生产者-消费者问题

来源:操作系统 / note/进程管理/进程通信/生产者-消费者问题.md

上级:进程通信

生产者-消费者问题描述多个生产者向缓冲区放入数据,多个消费者从缓冲区取出数据时的同步与互斥。

约束

  • 缓冲区满时,生产者不能继续放入数据。
  • 缓冲区空时,消费者不能继续取出数据。
  • 同一时刻只能有一个执行流修改缓冲区状态。

信号量思路

  • mutex:二元信号量,保护缓冲区互斥访问。
  • empty:计数信号量,表示空缓冲区数量。
  • full:计数信号量,表示已有产品数量。

操作顺序

生产者通常先 P(empty),再 P(mutex),放入数据后 V(mutex),最后 V(full)。

消费者通常先 P(full),再 P(mutex),取出数据后 V(mutex),最后 V(empty)。

相关