Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Lesedauer 3 Min.

Thread-Safe Singleton in C#

Das Singleton Pattern lässt sich auch Thread Safe umsetzen. Wie das geht, zeigt ein Artikel.
Das Singleton Pattern stellt sicher, dass eine Klasse programmweit nur einmal instanziert werden kann. Es ist besonders nützlich bei Konfigurationsmanagern oder Protokollierungssystemen. Es gibt mehrere Arten, das umzusetzen. Z#um Beispiel so: public sealed class Singleton{    private static Singleton instance = null;    private Singleton() { }    public static Singleton Instance {        get {            if (instance == null) {                instance = new Singleton();            }            return instance;        }    }
}Aber wie der Autor auf https://csharpindepth.com/articles/Singleton schreibt, sollte man das so nicht einsetzen. Denn der Code ist nicht thread-safe. Ein anderer Thread könnte also zu bestimmten Zeiten eine weitere Instanz erzeugen. Damit dies nicht passiert, muss man den Code thread-safe machen. Wie das geht, zeigt ein Artikel auf CodeProject und zwar sowohl im klassischen doppelt geprüften Locking-Ansatz als auch mithilfe der modernen Lazy<T>-Methode.Die klassische Technik des doppelten Lockings minimiert den Performance-Overhead, indem sie nur beim ersten Zugriff auf die Instanz eine Sperre anwendet. Angesichts der Schwierigkeiten, die mit Multithreading-sicheren Implementierungen verbunden sind, ist diese Methode äußerst hilfreich.Im Gegensatz dazu ermöglicht die Lazy<T>-Klasse, die in C# 4.0 eingeführt wurde, eine noch einfachere und sicherere Implementierung. Diese Methode regelt die Thread-Sicherheit und verzögert die Instanzierung, bis die Instanz tatsächlich benötigt wird. Diese Techniken sind nicht nur für Entwickler im Bereich C# von Bedeutung, sondern bieten wertvolle Einsichten für jeden, der mit der Softwareerstellung in einer multithreaded Umgebung arbeitet.Abschließend ist es wichtig zu beachten, dass während Lazy<T> die bevorzugte Methode für die meisten modernen Anwendungen ist, Szenarien existieren, in denen die Flexibilität des doppelten Lockings vorteilhaft sein kann, insbesondere wenn dynamische Parameter zur Instanzierung benötigt werden. Die Wahl zwischen diesen Ansätzen sollte auf den spezifischen Anforderungen der Anwendung basieren.Weitere Informationen
Miscellaneous

Neueste Beiträge

Die Kunst der langen Aufgabenläufe - Kimi K3 – das Modell hinter dem Agenten, Teil 2
Ein guter Code-Generator löst eine klar umrissene Funktion. Ein Coding-Agent muss dagegen ein Repository erkunden, Hypothesen bilden, Werkzeuge auswählen, Tests auswerten und nach Fehlschlägen den Kurs ändern. Kimi K3 zielt auf diese zweite Klasse von Aufgaben.
8 Minuten
Gebaut für lange Läufe - Kimi K3 – das Modell hinter dem Agenten, Teil 1
Kimi K3 kombiniert 2,8 Billionen Parameter, native Bildverarbeitung und ein Kontextfenster mit einer Million Token. Das sind tolle Zahlen. Seine Besonderheit liegt aber darin, dass Architektur, Training und Laufzeitumgebung auf Agenten zielen, die über viele Schritte handeln, Werkzeuge aufrufen und Ergebnisse prüfen.
6 Minuten
Zwei Konferenz-Openings, eine Sprecherin – wie aus einem Terminkonflikt ein KI-Usecase wurde - Making-of eines Avatars mit HeyGen und ElevenLabs
Ein Terminkonflikt gelöst von einem digitalen Zwilling. Die Ebner Media Group hat die erste Infinite AI Conference von einem Avatar eröffnen lassen. Ein Erfahrungsbericht über den Produktionsprozess und den echten Nutzen synthetischer Präsenz.
7 Minuten
12. Aug 2026

Das könnte Dich auch interessieren

Elektronische Schaltkreise im Browser simulieren - Simulation
Statt mit Steckfeld oder Lötkolben kann man auf dieser Website Schaltungen per Drag and Drop zusammenstellen und deren Verhalten testen.
2 Minuten
26. Jul 2018
C#-.NET-Apps mit WinUI 3 - Komponentenbasierte Apps mit Fluent/FAST, Teil 3
Microsoft macht mit WinUI 3 ein natives User-Experience-Framework für Windows verfügbar, dessen Komponenten auf dem Microsoft-eigenen Design-System Fluent 2 basieren.
23 Minuten
13. Mai 2024
Stark beschränkt - Native-AOT-Kompilierung mit Entity Framework Core 9.0
In Entity Framework Core 9.0 liefert Microsoft erstmals eine Unterstützung für den Native-AOT-Compiler mit, die aber leider noch geringen praktischen Nutzen hat.
7 Minuten
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige