首页 > 试题广场 >

考虑图 5.10 中定义的无限缓冲区生产者/消费者问题的解决

[问答题]
考虑图 5.10 中定义的无限缓冲区生产者/消费者问题的解决方案。假设生产者和消费者都以大致相同的速度运行,运行情况如下:
生产者:append; semSignal; produce; ...; append; semSignal; produce; ...
消费者:consume;…;take; semWait; consume; ...; take; semWait; ...
生产者总向缓冲区添加一个新元素,并在消费者消费了前面的元素后发出信号。生产者通常将元素添加到空缓冲区中,而消费者通常取走缓冲区中的唯一元素。尽管消费者从不在信号量上阻塞,但必须进行大量的信号最调用,因此产生相当多的开销。

构建一个新程序,以便在这种情况下更有效率。提示:允许 n 的值为-1,这表示不仅缓冲区为空,而且消费者也检测到这个事实并将被阻塞,直到生产者产生新数据。这个方案不需要使用图 5.10中的局部变最 m。

这道题你会答吗?花几分钟告诉大家答案吧!