2011-10-25 50 views
0

我有一個單一類處理來自運行在不同線程中的不同客戶端的訂閱和取消訂閱請求。單身人士包含一系列的訂閱者。在添加或刪除之前,該類需要驗證元素尚未被添加或刪除。什麼線程安全的收集適合這種情況?

通常我會在每次操作之前使用List或HashSet調用Contains來實現此操作,但是如果我想在System.Collections.Concurrent命名空間中使用其中一個新類,則我看到的唯一選項是使用具有虛擬值的ConcurrentDictionary。

這是我最好的選擇還是有我忽略的東西?順便說一下,性能並不是真正的考慮因素。

回答

0

我想你應該堅持ConcurrentDictionary ...

+0

「和不同套,袋子支持重複。」與「在添加或刪除之前,類需要驗證元素尚未添加或刪除。」 – CodesInChaos

0

你爲什麼不使用ConcurrentDictionary與阻塞隊列支持。 BlockingQueue似乎適合您的生產者/消費者方案,而ConcurrentDictionary適合您的查找。

+0

我不確定我的場景是否適合生產者/消費者計劃。取消訂閱請求不需要遵循與訂閱請求相同的順序,所以我沒有看到在這種情況下使用隊列的好處。與僅使用字典相比,我看不出額外的好處。 – Mike

相關問題