【问题标题】:One Producer, Two Consumers Variant一个生产者,两个消费者变体
【发布时间】:2011-04-06 21:45:23
【问题描述】:

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

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

我天真地尝试让生产者在空信号量上等待两次,然后发出两次满信号,但这并没有奏效,正如我所预料的那样。

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

约束:

  • 仅限 pthread
  • 只有一个缓冲区

总结:

  • 一个生产者写入缓冲区
  • 在被生产者覆盖之前,两个消费者必须分别从缓冲区中读取每个项目

我只是不知道在这种情况下如何应用传统解决方案。

【问题讨论】:

    标签: synchronization


    【解决方案1】:

    如何给每个消费者自己的数据项引用队列,然后让生产者同时提供两个队列?

    【讨论】:

      猜你喜欢
      • 2014-04-19
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多