.NET Framework で同時実行 HashSet
紹介:
.NET Framework は同時実行 HashSet
カスタム スレッド セーフティ実装:
1 つのアプローチは、カスタムのスレッドセーフな 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 を使用
もう 1 つの方法は、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>
注:
方法を選択するときは、次の要素を考慮してください:
結論: .NET Framework における
同時 HashSets の必要性は、カスタム スレッド セーフ ラッパーを実装するか、ConcurrentDictionary
以上が.NET Framework で同時実行 HashSet を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。