美文网首页
生产者和消费者问题

生产者和消费者问题

作者: 我是聪 | 来源:发表于2021-07-23 21:28 被阅读0次

生产者和消费者问题

问题简述

组成

  • 系统中有一组生产者和消费者进程

  • 生产者

    • 生产者将产品放入缓冲区
  • 消费者

    • 消费者进程每次从缓冲区中取出一个产品
  • 缓冲区

    • 初始为空,大小为n的缓冲区
    • 临界资源,各进程必须互斥访问

信号量PV操作分析步骤

1 关系分析

  • 找出题目中描述的各个进程分析他们之间的同步、互斥关系

2 整理思路

  • 根据各进程的操作流程确定PV操作的大致顺序

3 设置信号量

  • 设置需要的信号量,并根据 题目条件确定信号量初始值

    • 互斥信号量一般为1
    • 同步信号量要看对应资源的初始值

举例

  • 信号量设置

    • 同步信号量

      • 空闲缓冲区的数量

        • semaphore mutex = n
      • 非空闲缓冲区的数量

        • semaphore mutex = 0
    • 互斥信号量

      • 对缓冲区的互斥访问

        • semaphore mutex = 1
  • 生产者进程和消费者进程实现

    • 生产者


      image.png
    • 消费者


      image.png
  • 能否改变PV顺序?

    • 举例

      • 生产者


        image.png
      • 消费者


        image.png
- 分析

    - 前提

        - 此时缓冲区已经放满产品

            - empty=0
            - full=n

    - 生产者

        - 先使mutex=0
        - 再执行P(empty)

            - 由于empty=0
            - 生产者被阻塞

    - 消费者

        - 消费者进程执行

            - mutex为0
            - 消费者也被阻塞

    - 结果 

        - 死锁

- 总结

    - 实现互斥的P操作一定要在实现同步的P操作之后

相关文章

  • 生产者和消费者问题

    生产者和消费者问题 问题简述 组成 系统中有一组生产者和消费者进程 生产者生产者将产品放入缓冲区 消费者消费者进程...

  • 生产者消费者

    什么是生产者和消费者 生产者消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。 生产者和消费者彼此之间不直...

  • 9. python多进程之Queue实现生产者消费者模型

    一、概述 什么是生产者消费者模式生产者消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此...

  • 生产者和消费者问题详解

    生产者和消费者问题详解 定义 生产者消费者问题(英语:Producer-consumer problem),也称有...

  • java生产者消费者实现

    什么是生产者消费者模式 生产者消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直...

  • 生产者消费者模式-java原生、Disruptor实现方案

    生产者消费者模式介绍 生产者消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接...

  • Java实现生产者-消费者模型的几种方法

    什么是生产者消费者模式 生产者消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直...

  • 第2章 2-4经典同步问题

    1.生产者—消费者问题 The proceducer – consumer problem:多个生产者和消费者对n...

  • 生产者和消费者

    生产者和消费者介绍 生产者和消费者是一个经典的问题,生产者负责生产,生产的东西放入buffer,消费者负责消费,从...

  • 第二章 经典同步问题(4)

    生产者-消费者的问题 有多个生产者和消费者对n个缓冲区的使用。 生产者 produce an item in ne...

网友评论

      本文标题:生产者和消费者问题

      本文链接:https://www.haomeiwen.com/subject/jawpmltx.html