Thread-sichere HashSet-Alternativen in .NET
In diesem Artikel werden threadsichere Ansätze für die Verwaltung von HashSet
Sammlungen in .NET untersucht und Alternativen zum manuellen Sperren angeboten. Ihr Beispiel verwendet benutzerdefinierte Sperren um HashSet
-Operationen, eine gültige, aber möglicherweise fehleranfällige Methode. Schauen wir uns bessere Optionen an.
Das .NET
-Framework stellt die ConcurrentDictionary
-Klasse innerhalb des System.Collections.Concurrent
-Namespace als überlegene Lösung bereit. ConcurrentDictionary
bietet threadsichere Hash-Tabellenfunktionen und verarbeitet gleichzeitige Lese- und Schreibvorgänge effizient. So verwenden Sie es:
<code class="language-csharp">private ConcurrentDictionary<string, byte[]> _data;</code>
Alternativ können Sie eine benutzerdefinierte ConcurrentHashSet
Klasse erstellen. Dieser Ansatz beinhaltet interne Verriegelungsmechanismen, um die Thread-Sicherheit zu gewährleisten. Nachfolgend finden Sie eine Beispielimplementierung:
<code class="language-csharp">public class ConcurrentHashSet<T> : IDisposable { private readonly ReaderWriterLockSlim _lock = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion); private readonly HashSet<T> _hashSet = new HashSet<T>(); public bool Add(T item) { ... } //Implementation as in original example public void Clear() { ... } //Implementation as in original example public bool Contains(T item) { ... } //Implementation as in original example public bool Remove(T item) { ... } //Implementation as in original example public int Count { ... } //Implementation as in original example public void Dispose() { ... } //Implementation as in original example protected virtual void Dispose(bool disposing) { ... } //Implementation as in original example ~ConcurrentHashSet() { ... } //Implementation as in original example }</code>
(Hinweis: Das ...
gibt an, dass der Code aus dem Originalbeispiel der Kürze halber hier eingefügt werden sollte).
Die Verwendung von ConcurrentDictionary
oder eines gut implementierten ConcurrentHashSet
verbessert die Codeklarheit erheblich und verringert das Risiko von Synchronisierungsfehlern im Vergleich zur manuellen Sperrung. Diese integrierten Lösungen sind für Leistung und Thread-Sicherheit optimiert.
Das obige ist der detaillierte Inhalt vonWie erreicht man Thread-sichere HashSet-Operationen in .NET?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!