在 .NET Framework 中实现并发 HashSet
简介:
.NET Framework 没有提供并发 HashSet
自定义线程安全实现:
一种方法是创建自定义的线程安全 HashSet
<code class="language-C#">public class ConcurrentHashSet<T> { private readonly HashSet<T> _hashSet = new HashSet<T>(); private readonly object _syncRoot = new object(); public bool Add(T item) { lock (_syncRoot) { return _hashSet.Add(item); } } public bool Remove(T item) { lock (_syncRoot) { return _hashSet.Remove(item); } } // 其他操作可以类似地实现 }</code>
使用 ConcurrentDictionary
另一种方法是利用 System.Collections.Concurrent 命名空间中的 ConcurrentDictionary
<code class="language-C#">private ConcurrentDictionary<T, byte> _concurrentDictionary = new ConcurrentDictionary<T, byte>(); public bool Add(T item) { byte dummyValue = 0; return _concurrentDictionary.TryAdd(item, dummyValue); } public bool Remove(T item) { byte dummyValue; return _concurrentDictionary.TryRemove(item, out dummyValue); } // 其他操作可以类似地实现</code>
注意事项:
在选择方法时,请考虑以下因素:
结论:
可以通过实现自定义线程安全包装器或使用 ConcurrentDictionary
以上是如何在.NET Framework中实现并发HashSet?的详细内容。更多信息请关注PHP中文网其他相关文章!