经典同步进程问题.docVIP

  • 5
  • 0
  • 约 5页
  • 2016-11-29 发布于重庆
  • 举报
经典同步进程问题

1、生产者-消费者问题 ?? 问题描述是:有一群生产者进程在生产产品,此产品提供给消费者去消费。为使生产者和消费者进程能并发执行,在它们之间设置一个具有n个缓冲池,生产者进程可将它所生产的产品放入一个缓冲池中,消费者进程可从一个缓冲区取得一个产品消费。 ?? 问题分析: 设两个同步信号量:一个说明空缓冲区的数目,用empty表示,初值为有界缓冲区的大小N,另一个说明已用缓冲区的数目,用full表示,初值为0。由于在执行生产活动和消费活动中要对有界缓冲区进行操作。有界缓冲区是一个临界资源,必须互斥使用,所以另外还需要设置一个互斥信号量mutex,其初值为1。 semaphore mutex=1,empty=n,full=0; item buffer[n];?? //缓冲区 int in=out=0;?? //输入、输出指针 void producer()?? {???? ?????while(1) ????{???? ????… ???? 生产一个产品nextp; ????… ????wait(empty);? //等待空缓冲区的数目非0 ????wait(mutex);? //等待无进程操作缓冲区???? ????buffer[in]= nextp; //往Buffer [in]放产品 ????in = (in+1) mod n; ????signal(mutex);? //允许其

文档评论(0)

1亿VIP精品文档

相关文档