Heim > Backend-Entwicklung > C++ > Wie erreicht man Thread-sichere HashSet-Operationen in .NET?

Wie erreicht man Thread-sichere HashSet-Operationen in .NET?

Mary-Kate Olsen
Freigeben: 2025-01-09 07:14:48
Original
899 Leute haben es durchsucht

How to Achieve Thread-Safe HashSet Operations in .NET?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

(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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage