我需要在具有有界缓冲问题的经典生产者 - 消费者上实现变体。在某种程度上,它更像读者 - 作者,有限的缓冲区。
我有一个生产者和两个消费者,但是两个消费者必须在覆盖之前从缓冲区中读取每个项目,因此basic solution不起作用。
我天真地尝试让生产者等待空信号量两次,然后发出两次信号,但这不起作用,正如我预期的那样。
一个非常简单的解决方案是让生产者生产,然后向每个消费者发出信号,然后等待两次。每个消费者等待生产者,然后消费,然后向读者发出信号。在这个解决方案中,至少消费者仍然同时执行,但它并没有真正捕捉到问题的精神,并且它没有利用缓冲区。我可以扩展它,以便生产者在缓冲区中生成 n 项,然后等待消费者阅读它们,这至少减少了一些开销,但最终没有任何不同。
约束:
要点:
在这种情况下,我无法弄清楚如何应用传统解决方案。
答案 0 :(得分:0)
如何为每个消费者提供自己的数据项引用队列,然后让生产者为两个队列提供数据?