Maison >développement back-end >C++ >Comment implémenter un HashSet simultané dans le .NET Framework ?
Implémentation de HashSet simultané
Introduction :
Le .NET Framework ne fournit pas d'implémentation intégrée d'un HashSet simultané
Implémentation de la sécurité des threads personnalisés :
Une approche consiste à créer une implémentation personnalisée de 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>
Utiliser ConcurrentDictionary
Une autre approche consiste à utiliser la classe 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>
Remarque :
Lors du choix d'une méthode, tenez compte des facteurs suivants :
Conclusion :
Le besoin de HashSets simultanés
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!