.net 哪个线程安全集合适用于此场景?

.net 哪个线程安全集合适用于此场景?,.net,collections,thread-safety,.net,Collections,Thread Safety,我有一个单例类处理来自不同线程中运行的不同客户端的订阅和取消订阅请求。singleton包含订阅者的集合。在添加或删除元素之前,类需要验证元素是否尚未添加或删除 通常我会在每次操作之前使用列表或HashSet调用Contains来实现这一点,但是如果我想使用System.Collections.Concurrent命名空间中的一个新类,我看到的唯一选项是使用带有伪值的ConcurrentDictionary 这是我最好的选择还是我忽略了什么?顺便说一下,性能并不是一个需要考虑的因素。 < P>我

我有一个单例类处理来自不同线程中运行的不同客户端的订阅和取消订阅请求。singleton包含订阅者的集合。在添加或删除元素之前,类需要验证元素是否尚未添加或删除

通常我会在每次操作之前使用列表或HashSet调用Contains来实现这一点,但是如果我想使用System.Collections.Concurrent命名空间中的一个新类,我看到的唯一选项是使用带有伪值的ConcurrentDictionary


这是我最好的选择还是我忽略了什么?顺便说一下,性能并不是一个需要考虑的因素。

< P>我认为你应该坚持…

为什么不使用带有阻塞队列的并发字典。BlockingQueue似乎适合您的生产者/消费者方案,ConcurrentDictionary适合您的查找。

与集合不同,行李支持重复。在添加或删除之前,类需要验证元素是否尚未添加或删除。我不确定我的场景是否符合生产者/消费者方案。取消订阅请求不需要遵循与订阅请求相同的顺序,因此我无法看到在这种情况下使用队列的好处。与仅仅使用字典相比,我看不出有什么额外的好处。