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

Neueste Beiträge

Arbeiten mit Tabellen und KI in Dataverse
Microsoft unterstützt die zentrale Datenmanagement-Lösung Dataverse in Power Apps mit KI-Features.
7 Minuten
6. Aug 2025
Managed DevOps Pools - Azure DevOps Pipelines Security
Agent Pools als Managed Service mit einfacher Integration in private Netzwerke und Authentisierung mittels Managed Identity tragen deutlich zur Sicherheit der Agent-Infrastruktur bei.
7 Minuten
7. Aug 2025
Müssen Ziele SMART sein?
Wenn es um Ziele im Projektmanagement oder in der Führung einer Organisation geht, stoßen wir schnell und fast ausnahmslos auf das Akronym SMART. Was steckt dahinter, und kann es nicht auch sinnvolle Ziele geben, die nicht SMART sind?
8 Minuten
Miscellaneous

Das könnte Dich auch interessieren

Sicher ist sicher - Azure DevOps Pipelines Security
Als integraler Bestandteil der Entwicklungsumgebung ist Azure DevOps Pipelines oft Ziel von Angriffen. Da ist es gut zu wissen, wo die Schwachstellen des Systems liegen.
14 Minuten
16. Jun 2025
CodeProject.AI Server in neuer Version - Lokaler AI-Server
CodeProject.AI Server (jetzt in Version 2.1.10) ist ein lokal installierter, selbstgehosteter, schneller, kostenloser und Open Source Artificial Intelligence Server für jede Plattform und jede Sprache.
2 Minuten
Für Einsteiger: Backend-Webentwicklung mit .NET - Microsoft
Auf YouTube bietet Microsoft eine Videoserie für Einsteiger in die Backend-Webentwicklung mit .NET.
2 Minuten
13. Feb 2024
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige