Meyers' Singleton-Implementierung: Thread-Sicherheit in verschiedenen C-Standards
Meyers' Implementierung des Singleton-Musters mit verzögerter Initialisierung wirft Fragen zu seinem Thread auf Sicherheit. Dieser Artikel untersucht sein Verhalten in verschiedenen C-Standards.
C 11 und höher
In C 11 und nachfolgenden Standards ist die Singleton-Implementierung von Meyers threadsicher. Gemäß dem Standard (§6.7 [stmt.dcl] p4) muss die gleichzeitige Ausführung der Deklaration auf den Abschluss der Initialisierung warten.
C 03
In C 03, Die Singleton-Implementierung von Meyers war nicht threadsicher. Meyers‘ Artikel über „Double-Checked Locking“ beleuchtet dieses Problem. Er schlägt eine vollständige Sperrung der Instanziierungsmethode als einfachen Ansatz vor, um die Thread-Sicherheit auf allen Plattformen zu gewährleisten. Doppelt überprüfte Sperrmuster können auf bestimmten Architekturen ohne strategische Speicherbarrieren anfällig für Race Conditions sein.
Unterstützte Compiler
Dynamische Initialisierung und Zerstörung mit Parallelität (Magic Statics auf MSDN ) ist die zugrunde liegende Funktion, die Thread-Sicherheit in C 11 gewährleistet. Die folgenden Compiler unterstützen dies Feature:
Das obige ist der detaillierte Inhalt vonIst die Singleton-Implementierung von Meyers in verschiedenen C-Standards threadsicher?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!