2016-04-14 75 views
-1

我已经分配了一门课程来为使用单个生产者,单个消费者和循环缓冲区的消费者/生产者问题实施解决方案。这应该用C语言编写。消费者/生产者任务的解决方案

不幸的是,我们没有提供任何学习资料,并且在某种程度上意味着在演讲者没有帮助的情况下实现这一目标。

要求是如下:

要求:你被要求以实现用于使用A单生产者,单个消费者,和圆形有界缓冲器消费者/生产者问题(即,包含一个固定大小的溶液,例如整数值)。生产者和消费者都生成/消费无限数量的项目(例如整数)。也就是说,它们可以在无限循环中执行,假设代码无限期地运行。你可以自由选择如何实现这种方法,但是,可能推荐使用信号量。一个成功的实现具有:

  • 循环缓冲器,其大小是固定的和可配置的(例如,使用定义语句)
  • 计数器保持跟踪已生产的物品的数量/到目前为止消耗(你忽略整数/长整数)
  • 产生的每个项目的识别号码,例如其在生成项目序列中的索引
  • 一个简单的可视化,演示了缓冲区中的项目数量如何演变为超时。这可以像每次打印多个星形一样简单,每个物品被生成/消耗,每个星形代表当前在缓冲区中的一个元素
  • 正确同步可能存在的任何关键部分,并且只在严格需要的地方这样做

如果有人能帮助我如何处理这个要求,这将是非常感谢

+1

由于太模糊或太宽泛,很可能会被封闭。查看http://meta.stackexchange.com/questions/10811/how-do-i-ask-and-answer-homework-questions,了解如何寻求帮助作业的建议,以建立一个通常有用的问题的方式一个答案。 –

回答

1

虽然我不能为你提供完整的解决方案(也不应该I),有可能带领你走向解决方案的一条好路径。

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

这对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

记住:这些来源是伟大的使用,当你试着去了解但是,在不理解正在发生的事情的情况下复制代码是一种非常不好的习惯,除了浪费你作为学生的时间外,什么也不做。

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

因此,出门在外,做一个彻底的研究,并专门花时间研究这个问题,当你开始编写代码并且问题开始出现时,不要再害怕再问这个问题。随着你对这个问题和一段代码的更好掌握,帮助你更容易。

希望这有助于,但。 =)