Heim >Backend-Entwicklung >C++ >Ist die Singleton-Implementierung von Meyers in C 11 und C 03 threadsicher?

Ist die Singleton-Implementierung von Meyers in C 11 und C 03 threadsicher?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-28 10:33:11201Durchsuche

Is Meyers' Singleton Implementation Thread-Safe in C  11 and C  03?

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:

  • Visual Studio: Unterstützt seit Visual Studio 2015
  • GCC: Unterstützt seit GCC 4.3

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn