在 .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中文網其他相關文章!