有n个生产者进程向1个有限的缓冲区不断地发送信息,这些信息通过缓冲区分发到m个消费者,缓冲区的大小只可以存放1条信息。生产者和消费者的工作遵循如下规则: (1)生产者和消费者对缓冲区的访问互斥; (2)对每1条放人缓冲区的信息,所有消费者都

admin2013-12-31  26

问题 有n个生产者进程向1个有限的缓冲区不断地发送信息,这些信息通过缓冲区分发到m个消费者,缓冲区的大小只可以存放1条信息。生产者和消费者的工作遵循如下规则:
    (1)生产者和消费者对缓冲区的访问互斥;
    (2)对每1条放人缓冲区的信息,所有消费者都必须接收1次;
    (3)缓冲区满时,生产者必须阻塞,缓冲区空时,消费者阻塞。
    请用信号量和P、V操作组织正确的发送和接收。用类C语言进行描述。

选项

答案本题的解答采用分离的信号量来实现,可以比较清楚地看到操作的过程。 typedef int semaphore; //定义信号量 semaphore mutex; //缓冲区互斥信号量用于读写互斥 semaphore empty[m]={1,1…,1); //当前缓冲区所有格子为空 semaphore grid[m]={0,0…,0}; //缓冲区的每个格子满的信号量 void producer() //生产者 { int i,buffer; while(1) //并发调度 { message=produce(); //生产者生产信息 for(i=0,i
解析
转载请注明原文地址:https://kaotiyun.com/show/USxi777K
0

最新回复(0)