我需要一個不允許重複的共同集合(在BlockingCollection中用作生產者/消費者)。 我不需要嚴格的元素順序。 從另一方面,我想盡量減少元素「生活」收集的最大時間。即收集一定不能是LIFO,理想情況下它應該是FIFO。如何創建不重複的ConcurrentQueue?
那麼我會說,我需要ConcurrentQueue沒有重複允許,但ConcurrentBag沒有重複也可以工作。
爲什麼C#不包含這樣的東西,可能有人已經創建了它?
這個問題我剛纔的問題的結果What type of IProducerConsumerCollection<T> to use for my task?
C#只是一種語言,你必須尋找一個庫來獲得這樣的功能。像.NET框架一樣,ConcurrentQueue/Bag的主頁。沒有人考慮過這樣寫代碼,它註定要失敗。因爲你無法準確預測生產者何時生產和消費者消費。確定何時消除重複數據大致類似於根據Random.Next()的返回值做出決定。無論什麼原因你必須實現這樣的事情:它註定要失敗。 – 2011-05-01 00:01:19
我不明白爲什麼它註定要失敗。我可以使用ConcurrentDictionary來模擬Set(我將只使用key,value將始終爲null)。我不想消除重複。應該沒有重複。 – javapowered 2011-05-01 07:08:03
此外,「堅果殼中的C#」指出可以編寫併發堆棧:「但是,如果您編寫了自己的併發集合以禁止重複,但是如果元素已經存在,則會使TryAdd返回false(例如,如果您寫了併發集合)「 – javapowered 2011-05-01 09:13:11