操作系统:生产者和消费者问题(及伪代码实现) 您所在的位置:网站首页 编写生产者消费者的代码 操作系统:生产者和消费者问题(及伪代码实现)

操作系统:生产者和消费者问题(及伪代码实现)

2024-07-11 10:25| 来源: 网络整理| 查看: 265

学习网址 假设缓冲区大小为10,生产者、消费者若干。只要缓冲区池未满,生产者便可以将消息送入缓冲区池,只要缓冲区池未空,消费者便可以从缓冲区中取走一个消息。

items代表缓冲区可使用的资源数,space代表缓冲区可用资源数mutex表示互斥锁buf[10]代表缓冲区,内容类型为itemin、out代表第一个资源和最后一个资源(i即in最早产生的资源) var items=0,sapce=10,mutex=1; var in=0,out=0; item buf[10]={NULL}; producer{ while(true){ P(space);//等待缓冲区有空闲位置,在使用PV操作时,条件变量需要在互斥锁之前 P(mutex);//保证在product时不会有其他进程访问缓冲区 //product buf.push(item,in); //将新资源放到buf[in]位置 in=(in+1)%10; V(mutex); V(items); } } consumer{ while(true){ P(items); //等待缓冲区有资源可以使用 P(mutex); //保证在consume时不会有其他线程访问缓冲区 //consume buf.pop(out); //将buf[out]位置的资源取走 out=(out+1)%10; V(mutex); V(space); } }


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有