Synchronization 一个生产者,两个消费者
我需要在具有有界缓冲区的经典生产者-消费者问题上实现一个变体。在某种程度上,它更符合读者和作者的思路,有一个有限的缓冲区 我有一个生产者和两个消费者,但这两个消费者都必须在覆盖缓冲区之前读取缓冲区中的每个项目,因此该项不起作用 我天真地尝试让生产者等待两次空信号量,然后发出两次满信号,但没有成功,正如我所预料的那样 一个非常简单的解决方案是让生产者生产,然后向每个消费者发出信号,然后等待两次。每个消费者等待生产者,然后消费,然后向读者发出信号。在这个解决方案中,至少消费者仍然并发执行,但它并没有真正抓住问题的实质,也没有利用缓冲区。我可以扩展它,使生产者在缓冲区中生成n个项目,然后等待消费者读取它们,这至少减少了一些开销,但最终没有什么不同 限制条件:Synchronization 一个生产者,两个消费者,synchronization,Synchronization,我需要在具有有界缓冲区的经典生产者-消费者问题上实现一个变体。在某种程度上,它更符合读者和作者的思路,有一个有限的缓冲区 我有一个生产者和两个消费者,但这两个消费者都必须在覆盖缓冲区之前读取缓冲区中的每个项目,因此该项不起作用 我天真地尝试让生产者等待两次空信号量,然后发出两次满信号,但没有成功,正如我所预料的那样 一个非常简单的解决方案是让生产者生产,然后向每个消费者发出信号,然后等待两次。每个消费者等待生产者,然后消费,然后向读者发出信号。在这个解决方案中,至少消费者仍然并发执行,但它并没有
- 仅限pthreads
- 只有一个缓冲区
- 一个生产者写入缓冲区
- 两个使用者必须各自读取缓冲区中的每个项目,然后才能被生产者覆盖
在这种情况下,我就是想不出如何应用传统的解决方案。给每个消费者提供自己的数据项引用队列,然后让生产者为这两个队列提供数据