操作系统335412568.docVIP

  • 5
  • 0
  • 约2.06万字
  • 约 19页
  • 2016-11-21 发布于江西
  • 举报
操作系统335412568.doc

P操作(也称为wait,down): p(int s) { while(s=0); s - -; } V操作(也称为signal,up): V(int s) { s++; } 3.3 经典同步问题 生产者-消费者问题 1)问题描述:有一个生产者和一个消费者,生产者生产商品并放在一个可以存放n件商品的仓库中,消费者在仓库中取出商品消费。 2)制约关系: 生产者与消费者之间不直接发生联系,他们通过仓库这个纽带(临界资源)发生制约关系,生产者生产商品,若仓库已满生产者等待,直到仓库有空为止;消费者在仓库空时,等待直到生产者的商品放入,否则,取一个商品消费。 3)实现考虑:仓库可以用队列表示,队头front,队尾rear 为了实现互相协调,设两个信号量, full=0; 表示当前队列中已有的数据个数 empty=n; 表示当前队列中还可以放的数据个数 初始化: front=rear=0; 进队: void addqueue(front,x) { if ((rear+1)% n ! = front ) { rear=(rear+1)%n; queue[rear]=x; } else 队上溢处理 } 退队

文档评论(0)

1亿VIP精品文档

相关文档