Menü

Wie man ein Singleton-Pattern threadsicher initialisiert

Beim Initialisieren eines Singleton-Patterns in Multi-Threading-Umgebungen gilt es, undefiniertes Programmverhalten zu vermeiden und Performanz zu erhalten.

Lesezeit: 7 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen 20 Beiträge
Von

Inhaltsverzeichnis

Ein Entwurfsmuster oder Pattern beschreibt eine generische Lösung für ein in einem bestimmten Kontext wiederkehrendes Entwurfsproblem. Das Gegenstück dazu heißt Antipattern und zeigt ein Negativbeispiel einer Vorgehensweise, um daraus Lehren zu ziehen.

Das Singleton-Pattern ist ein klassischer Anwendungsfall für eine Variable, die sich nur einmal initialisieren und dann nur noch lesend verwenden lässt. Als eines der klassischen Patterns aus dem Buch "Design Patterns: Elements of Reusable Object-Oriented Software" der Gang of Four zählt es zu den sogenannten Creational Patterns (Erzeugungsmuster) und genießt einen ambivalenten Ruf. Für die eine Hälfte der Softwareentwickler ist es ein Pattern, für die andere ein Antipattern. Ein Singleton-Pattern ist eine verkappte globale Variable, was mit den folgenden Konsequenzen einhergeht:

  • Das Singleton-Pattern untergräbt die Testbarkeit der Software, da seine Verwendung typischerweise nicht im Interface einer Funktion dokumentiert ist. Damit besitzt die Funktion eine implizite Abhängigkeit.
  • Nach seinem Erzeugen lebt es in der klassischen Form bis zum Ende des Prozesses.
  • Bei in verschiedenen Quelldateien erzeugten und voneinander abhängigen Singletons ist die Reihenfolge ihrer Erzeugung nicht wohldefiniert. Dieses Phänomen ist unter dem Namen "Static Initialization Order Fiasco" bekannt.
  • Die threadsichere Initialisierung eines Singletons besitzt eigene Herausforderungen.

Das Singleton-Pattern stellt sicher, dass es nur eine Instanz einer Klasse gibt. Die Geschichte der threadsicheren Initialisierung eines Singleton-Patterns zeigt aber auch, dass falsche Optimierung sich nicht auszahlt und zu undefiniertem Verhalten führen kann.

Immer mehr Wissen. Das digitale Abo für IT und Technik.

  • Zugriff auf alle Inhalte von heise+
  • exklusive Tests, Ratgeber & Hintergründe: unabhängig, kritisch fundiert
  • c't, iX, Technology Review, Mac & i, Make, c't Fotografie direkt im Browser lesen
  • einmal anmelden – auf allen Geräten lesen - jederzeit kündbar
  • erster Monat gratis, danach monatlich 9,95 €
  • Wöchentlicher Newsletter mit persönlichen Leseempfehlungen des Chefredakteurs
GRATIS-Monat beginnen Jetzt GRATIS-Monat beginnen Mehr Informationen zu heise+