Heim >Backend-Entwicklung >C++ >Ist die Singleton-Implementierung von Meyers in C 11 und C 03 threadsicher?
Thread-Sicherheit der Singleton-Implementierung von Meyers
In der bereitgestellten Singleton-Implementierung von Meyers mit verzögerter Initialisierung ist der Code in C threadsicher 11. Gemäß dem C 11-Standard (§6.7 [stmt.dcl] p4), wenn mehrere Threads versuchen, währenddessen auf den Singleton zuzugreifen Initialisierung warten die anderen Threads, bis die Initialisierung abgeschlossen ist.
GCC und Visual Studio unterstützen beide diese Thread-Sicherheitsfunktion (Dynamische Initialisierung und Zerstörung mit Parallelität), allerdings mit unterschiedlichen Implementierungsdaten:
Im Gegensatz dazu ist dieser Code in C 03 nicht threadsicher. Meyers‘ Artikel „C and the Perils of Double-Checked Locking“ analysiert verschiedene threadsichere Implementierungen des Singleton-Musters. Letztendlich kommt Meyers zu dem Schluss, dass (in C 03) die Verwendung einer vollständigen Sperre um die Instanziierungsmethode der einfachste Ansatz ist, um Parallelität über verschiedene Plattformen hinweg sicherzustellen. Andererseits können doppelt überprüfte Sperrmustervarianten auf bestimmten Architekturen zu Race-Bedingungen führen, es sei denn, Speicherbarrieren werden strategisch zwischen Anweisungen platziert.
Das obige ist der detaillierte Inhalt vonIst die Singleton-Implementierung von Meyers in C 11 und C 03 threadsicher?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!