zurück zum Artikel

Wie man ein Singleton-Pattern threadsicher initialisiert

Rainer Grimm
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.

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 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.


URL dieses Artikels:
https://www.heise.de/-4509510