2016-04-14 76 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

記住:這些來源是偉大的使用,當你試着去了解但是,在不理解正在發生的事情的情況下複製代碼是一種非常不好的習慣,除了浪費你作爲學生的時間外,什麼也不做。

最後,和老師一樣糟糕,不要害怕聯繫他並尋求幫助。表現出興趣可以真正激發一個顯然沒有動機的老師。

因此,出門在外,做一個徹底的研究,並專門花時間研究這個問題,當你開始編寫代碼並且問題開始出現時,不要再害怕再問這個問題。隨着你對這個問題和一段代碼的更好掌握,幫助你更容易。

希望這有助於,但。 =)