消费者/生产者任务的解决方案

时间:2016-04-14 18:01:22

标签: c operating-system producer-consumer

我被分配了一个课程,以实现使用单个生产者,单个消费者和循环缓冲区的消费者/生产者问题的解决方案。这应该用C语言编写。

不幸的是,我们没有提供任何学习材料,并且在没有讲师帮助的情况下以某种方式实现这一点。

要求如下:

要求:要求您为使用单个生产者,单个消费者和循环有界缓冲区(即包含例如整数值的固定大小)的消费者/生产者问题实施解决方案。生产者和消费者都生成/消费无限数量的项目(例如整数)。即,它们可以在无限循环中执行,假设代码无限期运行。您可以自由选择如何实现此方法,但是,可能建议使用信号。一个成功的实施有:

  • 大小固定且可配置的循环缓冲区(例如,使用define语句)
  • 记录到目前为止已生产/消费的商品数量的计数器(您忽略了整数/多头的包装)
  • 每个产品的标识号,例如它在生产项目序列中的索引
  • 一个简单的可视化,演示缓冲区中的项目数量如何随时间演变。这可以像每次生产/消费项目时打印多个星星一样简单,每个星形代表当前在缓冲区中的一个元素
  • 正确同步可能存在的任何关键部分,并且仅在严格必要的情况下同步

如果有人能帮助我解决这个问题,那将非常感激

1 个答案:

答案 0 :(得分:1)

虽然我无法为您提供完整的解决方案(我也不应该),但您可以引导您走向解决方案。

消费者/生产者问题是一个经典问题,涉及同步,避免“饥饿”或死锁。这是计算机科学中的一个重要问题,因为该解决方案对于操作系统来说是非常基础的。

CS学生学习是件好事,但可能需要一些时间和精力。研究这个问题有很多很好的资源。这是一些。

维基百科https://en.wikipedia.org/wiki/Producer%E2%80%93consumer_problem

CS MTU https://www.cs.mtu.edu/~shene/NSF-3/e-Book/SEMA/TM-example-buffer.html

此外,有很多关于它的视频: https://www.youtube.com/results?search_query=producer+consumer+problem

请记住:当您尝试理解这些来源时,这些来源非常有用,但是在不理解正在发生的情况下复制代码是一种非常糟糕的习惯,除了浪费您作为学生的时间之外什么也不做。

最后,和老师一样糟糕,不要害怕与他联系并寻求帮助。表现出兴趣可以真正激发一个显然没有动力的老师。

所以去那里,做一个彻底的研究,并花时间研究这个问题,当你开始编码和问题开始出现时,不要害怕再次询问这个问题。通过更好地掌握问题和一段代码,可以更轻松地帮助您。

希望这会有所帮助。 =)

相关问题