Synchronization 一个生产者,两个消费者

Synchronization 一个生产者,两个消费者,synchronization,Synchronization,我需要在具有有界缓冲区的经典生产者-消费者问题上实现一个变体。在某种程度上,它更符合读者和作者的思路,有一个有限的缓冲区 我有一个生产者和两个消费者,但这两个消费者都必须在覆盖缓冲区之前读取缓冲区中的每个项目,因此该项不起作用 我天真地尝试让生产者等待两次空信号量,然后发出两次满信号,但没有成功,正如我所预料的那样 一个非常简单的解决方案是让生产者生产,然后向每个消费者发出信号,然后等待两次。每个消费者等待生产者,然后消费,然后向读者发出信号。在这个解决方案中,至少消费者仍然并发执行,但它并没有

我需要在具有有界缓冲区的经典生产者-消费者问题上实现一个变体。在某种程度上,它更符合读者和作者的思路,有一个有限的缓冲区

我有一个生产者和两个消费者,但这两个消费者都必须在覆盖缓冲区之前读取缓冲区中的每个项目,因此该项不起作用

我天真地尝试让生产者等待两次空信号量,然后发出两次满信号,但没有成功,正如我所预料的那样

一个非常简单的解决方案是让生产者生产,然后向每个消费者发出信号,然后等待两次。每个消费者等待生产者,然后消费,然后向读者发出信号。在这个解决方案中,至少消费者仍然并发执行,但它并没有真正抓住问题的实质,也没有利用缓冲区。我可以扩展它,使生产者在缓冲区中生成n个项目,然后等待消费者读取它们,这至少减少了一些开销,但最终没有什么不同

限制条件:

  • 仅限pthreads
  • 只有一个缓冲区
总结:

  • 一个生产者写入缓冲区
  • 两个使用者必须各自读取缓冲区中的每个项目,然后才能被生产者覆盖

在这种情况下,我就是想不出如何应用传统的解决方案。

给每个消费者提供自己的数据项引用队列,然后让生产者为这两个队列提供数据