我想創建一個生產者/消費者與經理程序在Go中。例如:我有一個5 producers, 5 consumers and manager
。生產者有their own local arrays
,他們遍歷它們並將這些元素髮送給經理。消費者有their own local arrays
與元素消耗的信息;他們也會把它們發給經理。經理有它own array
,它存儲什麼和有多少元素(例如 - 如果生產者發送1 1 2 3 1 2 0
元素,管理器陣列看起來像1 3 2 1
(一個0,3,1,2,2和3),它處理生產者'和消費者的請求 - 將一個元素放入數組(生成)或將其刪除(消耗)併發生產者和消費者在去
是否有可能在Go中創建類似此類的程序?我已經在具有發送通道的JAVA + CSP中執行此操作在生產者和消費者試圖處理相同的元素時(例如,生產者想要將1添加到管理器陣列並且同時消費者想要消耗1),管理器中的信息和警衛確定哪個過程應該首先完成, 。
Any exa mples或建議是受歡迎的,因爲我沒有找到任何有關我想做什麼的信息。如果需要,我可以給我的JAVA + CSP代碼。
UPDATE。如何同步(不從空數組中取出)?例如,如果消費者想要消耗尚未存在的管理器數組中的元素(例如,消費者想要消費'3',但管理員沒有任何這些元素),但生產者具有此元素,並且它會在少數迭代 - 我如何讓消費者一次又一次地檢查管理器陣列,直到生產者工作完成?我是否需要爲消費者元素創建結構(或類)並標記它們是否被使用,或者Go有具體方法來執行此操作?
只需將此行'for i:= range ns'更改爲'for _,i:= range ns',並且所有內容均按預期工作,謝謝。但現在我有其他問題,如果你能看一下,我更新了我的問題。 – Eddwhis