有n个生产者进程向1个有限的缓冲区不断地发送消息,这些消息通过缓冲区分发到m个消费者,缓冲区的大小只可以存放1条消息。生产者和消费者的工作遵循如下规则:(1)生产者和消费者对缓冲区的访问互斥;(2)对每1条放入缓冲区的消息,所有消费者都必须接收1次;(3)缓冲区满时,生产者必须阻塞,缓冲区空时,消费者阻塞。请用信号量和P、V操作组织正确的发送和接收。用类c语言进行描述。
[解答]本题的解答采用分离的信号量来实现,可以比较清楚地看到操作的过程。
举一反三
- 在生产者和消费者问题中,生产者和消费者之间的公用缓冲池中,利用信号量empty和full分别表示缓冲池中空缓冲区和满缓冲区的数量,其初值分别为( )。
- 在生产者-消费者问题中,缓冲池包含n个缓冲区,应设置互斥信号量mutex。它的初值应分别为( )。 A: 0 B: 1 C: -1 D: -n E: +n
- 中国大学MOOC: 采用信号量和P、V原语解决生产者—消费者问题时,设:信号量Empty对应空缓冲区资源,Full对应满缓冲区资源,Mutex用于访问共享缓冲池时的互斥,则下列进程描述( )是正确的。
- 在生产者-消费者问题中,缓冲池包含n个缓冲区,应设置互斥信号量mutex。它的初值应分别为( )。 A: 0 B: 1 C: n D: n-1
- 在生产者消费者问题中,消费者调用P(mutex)(mutex是互斥信号量)阻塞的条件是()。 A: 有生产者进入在往缓冲区存放产品 B: 有消费者进入在从缓冲区读产品 C: 缓冲区空 D: 缓冲区满
内容
- 0
在生产者-消费者问题中,缓冲池包含n个缓冲区,应设置empty。它的初值应为( )。 A: 0 B: 1 C: -1 D: -n E: +n
- 1
在生产者消费者问题中,消费者调用wait(mutex)(mutex是互斥信号量)阻塞的条件是()。 A: 有生产者进入在往缓冲区存放产品 B: 有消费者进入在从缓冲区读产品 C: 缓冲区空 D: 缓冲区满
- 2
在生产者消费者问题中,消费者调用wait(mutex)(mutex是互斥信号量)阻塞的条件是()。 A: 有生产者进入在往缓冲区存放产品 B: 有消费者进入在从缓冲区读产品 C: 缓冲区空 D: 缓冲区满
- 3
在生产者消费者问题中,消费者调用wait(mutex)(mutex是互斥信号量)阻塞的条件是( )。 A: 有消费者进入在从缓冲区读产品 B: 缓冲区空 C: 有生产者进入在往缓冲区存放产品 D: 缓冲区满
- 4
在利用记录型信号量解决生产者-消费者问题中,假设有9个生产者,6个消费者,1个容量为8个缓冲区的缓冲池,用mutex表示对缓冲池的互斥使用,分别用empty,full分别缓冲池中空缓冲区的数量和非空缓冲区的数量,则初始状态下,信号量mutex,empty,full的初始值分别为多少?() A: mutex=8,empty=0,full=1 B: mutex=8,empty=1,full=0 C: mutex=1,empty=0,full=8 D: mutex=1,empty=8,full=0