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

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

Mary-Kate Olsen
Freigeben: 2024-12-21 07:26:10
Original
515 Leute haben es durchsucht

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

Ist das Singleton-Design von Meyers threadsicher?

Die vorgestellte Implementierung des Singleton-Musters von Meyers unter Verwendung einer verzögerten Initialisierung wirft die Frage auf Thread-Sicherheit. Hier ist eine Analyse, warum dieser Code in C 11 Thread-sicher ist und wie er Thread-Sicherheit erreicht.

Thread-Sicherheit in C 11

Gemäß dem C 11-Standard , §6.7 [stmt.dcl] p4:

If control enters the declaration concurrently while the variable is being initialized, the concurrent execution shall wait for completion of the initialization.
Nach dem Login kopieren

Dies impliziert, dass in C 11 wird die obige Implementierung threadsicher. Der Standard verlangt, dass die Thread-Ausführung auf den Abschluss der Initialisierung wartet, bevor auf die Variable zugegriffen wird, um die Thread-Sicherheit zu gewährleisten.

Unterstützung in Compilern

Die folgenden Compiler bieten Unterstützung für die dynamische Initialisierung und Zerstörung mit Parallelität, die diese Funktion ermöglicht:

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

Hinweis für C 03

In C 03 war der Code nicht threadsicher. Meyers schlägt in seinem Artikel „C and the Perils of Double-Checked Locking“ vor, dass in C 03 die vollständige Sperrung rund um die Instanziierungsmethode der einfachste Weg ist, Thread-Sicherheit plattformübergreifend zu gewährleisten.

Das obige ist der detaillierte Inhalt vonIst die Singleton-Implementierung von Meyers in C 11 threadsicher?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage