美文网首页
PV操作(生产者消费者)

PV操作(生产者消费者)

作者: 小幸运Q | 来源:发表于2019-02-23 19:19 被阅读0次

进程的同步机制:

信号量S:尚未占用的资源数量

// 申请资源
P(S){
    S=S-1;
    if(S<0){
        // 调用该P操作的进程阻塞,插入阻塞队列。
    }
}

// 释放资源
V(S){
    S=S+1;
    if(S<=0){
        // 从等待信号量S的阻塞队列中唤醒一个进程
    }
}

  1. 进程互斥访问count然后++:
count=0;
S semaphore;     // 公用信号量
S=1;
Process P1{
  P(S);
  R1=count;
  R1=R1+1;
  count=R1;
  V(S);
}
Process P2{
  P(S);
  R2=count;
  R2=R2+1;
  count=R2;
  V(S);
}

  1. 生产者消费者问题

能不能先mutex再S1,S2?
不能,当生产者已经将缓冲区充满,消费者还没消费,则mutex上锁后阻塞在S1,然后消费者想mutex但是被阻塞,最后产生死锁。

mutex=1 同步信号量用于缓冲区互斥访问
S1=n 生产者进程(n为缓冲区大小) 
S2=0 消费者进程

// 生产者
while(true){
  P(S1);
  P(mutex);
  // 放入一件物品
  V(mutex);
  V(S2);
}
// 消费者
while(true){
  P(S2);
  P(mutex);
  // 拿出一件物品
  V(mutex);
  V(S1);
}

  1. 售票员与司机问题
image.png

相关文章

  • java多线程实现生产者消费者问题

    思想可以参考操作系统里的pv操作实现生产者消费者问题

  • PV操作(生产者消费者)

    进程的同步机制: 信号量S:尚未占用的资源数量 进程互斥访问count然后++: 生产者消费者问题 能不能先mut...

  • php操作kafka之实例操作(生产者和消费者)

    php操作kafka之实例操作(生产者和消费者) php kafka手册地址 1.生产者 更多例子 2.消费者 更...

  • 生产者-消费者 模型

    生产者与消费者基本程序模型 在多线程开发过程之中最为著名的案例就是生产者与消费者操作,该操作的主要流程如下:生产者...

  • PV操作经典问题

    PV(wait/singal)在考操作系统的时候经常被问到,这篇小文就整理一下几个常见的PV问题。 1. 生产者-...

  • Java 并发编程——生产者与消费者

    1. 生产者与消费者 1.1 程序基本实现(问题引出) 生产者与消费者是线程操作的经典案例,即:生产者不断生产,消...

  • 生产者-消费者问题

    1.生产者-消费者问题的产生 生产者和消费者指的是两个不同的线程类对象,操作同一资源的情况。具体操作情况如下。 1...

  • PV操作之生产者消费者c语言模拟

  • 14-生产者消费者模型

    生产者消费者 生产者消费者模型最早出现在操作系统的多道程序设计中。到这里我们发现在并发程序设计中经常使用的就是操作...

  • Dubbo起步

    目录 定义接口 生产者生产者依赖生产者实现 消费者消费者依赖消费者实现 初步印象 定义接口 生产者 生产者依赖 生...

网友评论

      本文标题:PV操作(生产者消费者)

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